Domanda

sto usando da poco gcov per raccogliere le informazioni copertura del codice. gcov gioca bene con l'applicazione eseguibile :), ma quando provo a caricare un file .so, ho ottenuto questo errore:. sconosciuto simbolo __gcov_merge_add

Poi ho ricerca su Google e qualcuno ha detto aggiungendo -lgcov alla bandiera di collegamento (LDFLAGS), ho fatto aggiungere questa opzione e non ha funzionato. Cerco anche in opzione --coverage nel legame di bandiera, non può sbarazzarsi di questo errore.

Qualcuno può aiutarmi su questo tema?

Grazie.

È stato utile?

Soluzione

mi sono imbattuto in questo problema troppo, ma da allora risolto. Mi basta usare l'opzione --coverage sia CPPFLAGS e LDFLAGS. Penso che dovrebbe prendersi cura del problema di compilazione per voi.

L'oggetto condiviso ancora non sembra produrre .gcda file e anche se non sono sicuro di come risolvere che i problemi. Come hai detto tu, funziona bene con gli eseguibili, ma oggetti condivisi sembrano avere qualche problema.

Modifica A quanto pare, gcov supportati da oggetti condivisi ora. Ho fatto una notevole quantità di ricerche di ieri e ho trovato in conflitto risposte, in modo ho spedito l'elenco gcc-aiuto. Vedi thread qui: http://gcc.gnu.org/ ml / gcc-help / 2010-09 / msg00130.html . Non ho provato risolvere il mio problema in base alla risposta ancora, ma mi post indietro quando lo faccio.

EDIT 2: Gli oggetti condivisi funzionano con gcov (o piuttosto che --cover opzione con gcc). C'è un altro post con i dettagli qui: gcov: produrre .gcda uscita dal libreria condivisa? . Si fa riferimento anche lo stesso filo sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top