sto cercando di compilare una semplice applicazione con gcov e ottenere i seguenti errori di collegamento:Dove sono i simboli gcov?
gcc AllTests.o CuTestTest.o CuTest.o -o TestTest
AllTests.o: In function `global constructors keyed to 0_RunAllTests':
/home/p7539c/cutest/AllTests.c:26: undefined reference to `__gcov_init'
AllTests.o:(.data+0x44): undefined reference to `__gcov_merge_add'
CuTestTest.o: In function `global constructors keyed to 0_TestCuStringNew':
/home/p7539c/cutest/CuTestTest.c:30: undefined reference to `__gcov_init'
CuTestTest.o:(.data+0x64): undefined reference to `__gcov_merge_add'
CuTest.o: In function `global constructors keyed to 0_CuStrAlloc':
/home/p7539c/cutest/CuTest.c:379: undefined reference to `__gcov_init'
CuTest.o:(.data+0x184): undefined reference to `__gcov_merge_add'
collect2: ld returned 1 exit status
make: *** [TestTest] Error 1
io non riesco a trovare la posizione dei simboli mancanti. gcov è presente sulla macchina che esegue gcc versione 4.1.2
Qualche idea? Grazie.
su Edit:
Tutto sembra funzionare bene quando si utilizza gcov con un'applicazione che è costituito da un file .c. Quando ho più file .c (quindi più file .o) ho il problema sopra riportato.
Le fasi di compilazione simile al seguente:
cc -fprofile-arcs -ftest-coverage -g -c -o AllTests.o AllTests.c
cc -fprofile-arcs -ftest-coverage -g -c -o CuTestTest.o CuTestTest.c
cc -fprofile-arcs -ftest-coverage -g -c -o CuTest.o CuTest.c
Provato con un'applicazione a file singolo e funziona. Sto avendo problemi con la mia applicazione multi-file. Compilano bene, ma sembra confondersi. – john146
p7539c @ localhost cutest> make cc -fprofile-arcs -ftest-coverage -g -c -o AllTests.o AllTests.c cc -fprofile-arcs -ftest-coverage -g -c -o CuTestTest.o CuTestTest. c cc -fprofile-arcs -ftest-coverage -g -c -o CuTest.o CuTest.c gcc AllTests.o CuTestTest.o CuTest.o -o TestTest – john146
Non si sta ancora superando il parametro -ftest-coverage in l'ultima chiamata a gcc. È necessario specificarlo anche durante il collegamento. – flodin