Parlo della mia! Praticamente ho speso tempo, forze ed energia per capire come mai uno stupido esempio che utilizzava gnome-keyring si rifiutava di compilare fallendo miseramente al momento del linking poiché mancava un simbolo nella relativa libreria.
All’inizio stupore “non può essere” poi inizio con objdump a vedere se questo simbolo era presente o meno, ma niente. Quindi apro il caro xchat e preso da dubbi comincio a rompere su #gnome #gnome-hackers e #gnome-debian, chiedendo se objdump visualizzasse tutti i simboli esportati in una libraria o per qualche ragione a me ignota escludesse le variabili globali.
Beh qualcuno mi ha aiutato, ma praticamente sono rimasto con il dubbio se objdump fosse il tool adatto e sono andato fuori strada poiché ho subito pensato ad un bug della mia distribuzione. Non rimaneva che scaricare i sorgenti da svn e provare direttamente quelli.
Stesso identico errore, quindi posto l’esempio su xchat e come prevedibile, grazie all’aiuto di qualche smanettino verifico che gentoo ubuntu e mandriva falliscono tutte. A questo punto il problema deve essere upstream.
Quindi prima devo chiarire se objdump -T fa il suo lavoro o meno poi iniziare a smanettare suo sorgenti, ma da dove partire dato che sembrano corretti? Beh scrivo un programma che simula la struttura di quella parte della libreria e raggiungo la consapevolezza che
- objdump fa bene il suo lavoro e lo fa anche su file .o ed eseguibili ed ha anche un sacco di amici come nm
- che grep come cosigliato da qualcuno non va bene perché può dare falsi positivi (simboli di debug)
Con queste nuove armi indago sul risultato della compilazione della versione in trunk ed arrivo alla conclusione che nel file gnome-keyring.o sto benedetto simbolo c’è, ma poi alla fine nell’immagine .so scompare.
Quindi non può essere gcc, ma qualche altra cosa… e bang: libtool. A questo punto è diventato tutto più facile e dopo aver dato un occhio ad header elf, scritto programmi, il fix si è ridotto ad una riga in Makefile.am!
http://bugzilla.gnome.org/show_bug.cgi?id=522651
Comunque era da tanto tempo che non provavo questa sensazione di novità mista a curiosità e mi è proprio piaciuta!