Newsgroup: it.comp.os.linux.sys
Titolo: Problemi di compilazione: undefined reference in libc.so.6

Salve a tutti,
inoltro anche qua questo post che avevo già inoltrato ma senza
risposte utili a it.comp.os.linux.debian e alla ML del mio LUG,
sperando in questa sede di avere più fortuna.
Flavio
---------------------------------------------------------------------
Ciao a tutti,
sto tentando di compilare un kernel UML su una Debian Unstable
partendo dai sorgenti ufficiali debian (linux-tree-2.6.12-2), ma vado
incontro ad alcuni problemi durante la compilazione, ancora nella fase
iniziale. Lo stesso problema si manifesta tentando di compilare qemu,
quindi escludo che sia un problema specifico del kernel.
L'errore che mi restituisce il gcc è il seguente:
/lib/libc.so.6: undefined reference to `__libc_stack_end@GLIBC_2.1'
/lib/libc.so.6: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
make[2]: *** [scripts/basic/fixdep] Error 1
make[1]: *** [scripts_basic] Error 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.12'
make: *** [stamp-kernel-configure] Error 2
Dovrebbe essere un problema del linker; ho cercato con Google ed ho
trovato alcuni riferimenti a problemi analoghi in cui viene spiegato
che l'errore si riferisce al linking con librerie non corrette (cfr.
https://www.redhat.com/archives/psyche-list/2003-April/msg00083.html
)
ma le soluzioni proposte non si adattano alla mia situazione.
Ho provato a reinstallare la libc6 e libc6-dev come anche il gcc e le
binutils, ma non cambia nulla. Le versioni di libc6, gcc e binutils
disponibili nei repository in sources.list sono solo quelle "ufficiali".
root@zipmantp:~# apt-cache madison libc6
     libc6 |    2.3.5-3 | 
http://ftp.debian.org
 unstable/main Packages
     libc6 | 2.3.2.ds1-22 | 
http://ftp.debian.org
 sarge/main Packages
     libc6 | 2.3.2.ds1-22 | 
http://ftp.debian.org
 etch/main Packages
root@zipmantp:~# apt-cache madison gcc
       gcc |  4:4.0.1-3 | 
http://ftp.debian.org
 etch/main Packages
       gcc |  4:4.0.1-3 | 
http://ftp.debian.org
 unstable/main Packages
       gcc |  4:3.3.5-3 | 
http://ftp.debian.org
 sarge/main Packages
root@zipmantp:~# apt-cache madison binutils
  binutils |   2.16.1-2 | 
http://ftp.debian.org
 etch/main Packages
  binutils |   2.16.1-2 | 
http://ftp.debian.org
 unstable/main Packages
  binutils |     2.15-6 | 
http://ftp.debian.org
 sarge/main Packages
Il file  cat /etc/ld.so.conf contiene queste due righe:
/usr/X11R6/lib
/usr/local/lib
Ma in /usr/local/lib non vi sono librerie che possano avere a che fare
con il problema. Non sono configurate variabili d'ambiente LD_*
nell'environment dell'utente.
L'output del comando ldconfig -v è allegato.
I pacchetti relativi a gcc e libc6 installati sono i seguenti:
binutils           2.16.1-2
gcc                4.0.1-3
gcc-3.3            3.3.6-7
gcc-3.3-base       3.3.6-7
gcc-3.4            3.4.4-5
gcc-3.4-base       3.4.4-5
gcc-4.0            4.0.1-4
gcc-4.0-base       4.0.1-4
libgcc1            4.0.1-4
libc6              2.3.5-3
libc6-dev          2.3.5-3
Qualcuno ha già incontrato il problema? Idee per risolverlo?
Flavio

 make: *** [stamp-kernel-configure] Error 2
Cosa dice ldconfig -p ?
Ti dice che stanno in cache tutte le librerie che sono contenute anche
in /lib?
Se lanci ldconfig senza parametri e poi provi a compilare cosa ottieni?
Gufo
-- 
  ,___,
  (9v9)		 .: May the owl be with you :.
  (_^((\	
-^-"-"-\\-^--	 Remove -me- to reply in email

 Gufo

 tutte le librerie elencate nell'allegato lib_not_cached.txt.
<cut>
Non sono troppo sicuro che il problema stia in quelle librerie che dici
mancano...sono anche a corto di idee su cos'altro possa essere.
Passo la palla a quelli piu' esperti di me...


 Flavio
Alla fine ho provato di tutto, dalla reinstallazione di tutti i
pacchetti riportati da dpkg --get-selections al purge di tutti i
pacchetti della sezione devel ed alla loro successiva reinstallazione.
Purtroppo nulla è servito per far rifunzionare le cose come dovrebbero.
Armato di tanta pazienza ho backuppato da un livecd i filesystem /,
/var e /usr ed ho provveduto ad una nuova reinstallazione di Debian
Sarge. Al termine della reinstallazione ho copiato il vecchio
sources.list, la cache locale dei pacchetti con tutti i packages che
avevo già scaricato nelle varie prove e, dopo un update, ho iniziato
un dist-upgrade a sid (come era prima).
L'upgrade lo ho portato avanti in modo incrementale, aggiornando
dapprima il sistema base, poi installando tutte le componenti non
grafiche che avevo in precedenza, poi installando xorg ed infine
installando lo gnomo. Ad ogni step ripetevo la prova di compilazione
che prima falliva miseramente e sempre con esiti positivi.
Al termine della giornata avevo il sistema con pressapoco tutti i
pacchetti precedenti installati (mancano alcune applicazioni
secondarie e sicuramente non relazionate al problema) e tutto funziona
a meraviglia.
Dato che non mi capacito delle motivazioni del problema ho pensato
possa trattarsi di un rootkit. Tralasciando il fatto che ritengo
abbastanza improbabile l'essermi beccato un rootkit sul portatile (ha
sempre il FW attivo, nessun servizio di rete pubblicato e lo uso
sempre e solo in reti aziendali), ho comunque deciso di verificare
questa ipotesi, si sa mai che qualche buontempone di collega (più
bastardo di me) mi abbia giocato un tiro mancino, anche se ho la
password al boot e il sistema è sempre locckato con password quando
sono assente.
Purtroppo il backup non lo ho eseguito con il dd (a causa della
mancanza di spazio) ma con un semplice tar, quindi se il rootkit non è
in un file regolarmente backuppato (tipo nascosto nel fs) ben
difficilmente posso individuarlo.
Ripristinato il backup in un volume su un'altra macchina (montato
noexec,nosuid,nodev) ho eseguito chkrootkit (utilizzando binari
sicuramente sani) ma non ha trovato nulla. Analogamente uno scan con
clamav aggiornato non ha riportato alcun file infetto.
Moduli di kernel in /lib/modules/`uname -r`/ diversi da quelli
presenti nel pacchetto linux-image-2.6.12-1-686 non ce ne sono (anche
se un LKM potrebbe essere ovunque) e l'analisi (alquanto superficiale
per la verità) dei files differenti tra la vecchia installazione e
quella attuale non ha mostrato nulla di significativo.
Sinceramente non so più cosa cercare; qualcuno ha idea di come
approfondire ulteriormente l'analisi?
TNX
Flavio