Assistenza con linker failer: .gnu.linkonce.t
-
11-09-2019 - |
Domanda
Ho problemi a collegare una libreria condivisa utilizzando 3.2.3 gcc con binutils 2.18. Quando provo a collegare la libreria ottengo il seguente errore:
.gnu.linkonce.t _... fa riferimento nella sezione .rodata: definito nella sezione scartato .gnu.linkonce.t ...
Ho fatto una discreta quantità di googling su questo e la maggior parte dei luoghi sembrano indicare che è una regressione introdurre in binutils 2.17 e successivamente fissato in 2.18.50, ma ero curioso di sapere se qualcuno sapeva che se ci fossero soluzioni alternative specifiche per il problema senza dover toccare binutils e gcc.
Grazie.
Soluzione
Questa si è rivelata essere un risultato strano in cui il sistema è stato mismatching gcc con un diverso binutils. / Usr / bin / gcc veniva usato (3.2.3) e / usr / local / bin / ld è stato utilizzato con essa a causa / usr / local / bin essere davanti / usr / bin nel percorso. Quando siamo passati in modo che / usr / bin era al fronte del percorso, il / usr / bin / ld appropriato è stato chiamato (binutils 2.14) e questo sembra aver risolto il problema.
Altri suggerimenti
Questo bug è stato trovato ed è stato segnalato qui GCC Bugzilla , un piccolo testcase che si concentra sul bug è stato fornito nei commenti che ho trovato per essere veramente utile per non perdere tempo. Questo bug è stato risolto a partire GCC 3.4.6
.
Ho avuto questo problema durante l'utilizzo di GCC 3.3.1
con binutils 2.15.92
e binutils 2.17.50
ed entrambi non ha funzionato. Quindi, per me è chiaramente non era il mix di versioni GCC
e binutils
che hanno reso il problema.
Se è necessario utilizzare una versione più vecchia GCC
è possibile utilizzare questa patch fornita da H.J.
e farlo manualmente quindi rigenerare nuovamente il vecchio GCC
.
Controlla le attachements nei link forniti che mostra il diff esatta per la correzione.
Ho fatto io e testato e ha funzionato con successo, l'applicazione di patch GCC 3.3.1
con il primo fix "senza COMDAT", ricostruito e utilizzato con binutils 2.15.92
e binutils 2.17.50
.