linker undefined-reference gcov

linker - Cómo resolver__gcov_init problema de referencia indefinido cuando enlace



undefined-reference (3)

¿Estás vinculando con -lgcov? Si está utilizando un Makefile, sería de gran ayuda echarle un vistazo para ayudarle.

Ahora trabajo en el estudio de cobertura de código C y encontré el siguiente problema, GCC versión 4.4.6:

  1. Se agregó el indicador del compilador CFLAGS = --coverage y opción de vinculador LDFLAGS := --coverage o LOCAL_LDLIBS := --coverage y recibió el error:

undefined reference to ''__gcov_init''" and "undefined reference to ''__gcov_merge_add''

  1. Se agregó la opción LOCAL_LDFLAGS := --coverage , y se obtuvo un error de enlace:

libgcov.a(_gcov.o): in function __gcov_set_sampling_rate: undefined reference to ''__gcov_sampling_rate'' libgcov.a(_gcov.o): in function gcov_exit: undefined reference to ''__gcov_pmu_profile_filename'' libgcov.a(_gcov.o): in function __gcov_init: undefined reference to ''__gcov_pmu_profile_options'' ''__gcov_pmu_top_n_address''

¿Alguien puede ayudar a proporcionar algunas sugerencias sobre este tema?


No puedo estar seguro de qué cambio finalmente hizo el truco para mí, pero creo que fue el -fprofile-generate . Usando GNAT GPS, fui a la pestaña Switches a la izquierda y luego seleccioné la pestaña Ada Linker en la parte superior. Luego habilité la casilla de verificación para la Code Coverage . Ah, sí, he encontrado que en la pestaña Builder en esa misma área, si habilitas la casilla Recompile if switches changed se puede ahorrar un montón de crujir de dientes. Probablemente ralentiza las cosas para los profesionales, pero me pareció útil.


Pruebe este enfoque:

Compile el código para el que desea generar la cobertura con estas opciones:

CFLAGS: -fprofile-arcs -ftest-coverage

LFLAGS: -lgcov --coverage

Si esto no resuelve el problema, proporcione información sobre la estructura de su aplicación, es decir, si se trata de un programa único o una aplicación que incluya bibliotecas compartidas / estáticas, etc.

¡Espero que ayude!