2012-12-02 19 views
10

Ho costruito l'ultima glibc e ora ho qualche problema con le funzioni in coreutils come ls o cat o qualsiasi altra cosa come vim.__vdso_time mancante dai programmi di utilità principali?

Il mio errore è

-bash-4.0$ cat 
cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument 

e ho costruito, glibc senza errori con la seguente configurazione

../glibc/configure --prefix=/home/ex/uid377/glibbuilt 

Nelle versioni più vecchie, come la 2.14, l'esecuzione dei servizi di pubblica utilità si traduce in un errore di segmentazione.

-bash-4.0$ ./pwd 
./pwd: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./pwd) 
-bash-4.0$ LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${LD_LIBRARY_PATH} 
-bash-4.0$ ./pwd 
Segmentation fault (core dumped) 

Modifica Kernel Version

-bash-4.0$ uname -r 
2.6.32.26-175.fc12.x86_64 
+0

Quali kernel Are You On? Quale distribuzione? E perché hai bisogno di costruire glibc a mano? –

+0

@NikolaiNFetissov Il nodo di login è Fedora 12 che esegue il kernel 2.6. – Mikhail

risposta

14

Avere più versioni di glibc su un unico sistema è possibile, ma un po 'complicato, come spiegato nel this risposta. In particolare, questo:

LD_LIBRARY_PATH =/home/ex/uid377/glibc/lib /: $ {LD_LIBRARY_PATH}

è previsto in crash, perché la vostra ld-linux-x86-64.so.2 non corrisponderanno libc.so.6

gatto: errore durante il caricamento librerie condivise: __vdso_time: modalità non valida per dlopen(): ...

Non è chiaro come è stato creato questo cat, ma è molto probabilmente lo stesso problema: si selezionano alcune librerie da /lib64 e altre da /home/ex/uid377/glibc/lib. Non farlo. Si deve collegare tutti i programmi che utilizzeranno /home/ex/uid377/glibc/lib/libc.so.6 con -Wl,--dynamic-linker=/home/ex/uid377/glibc/lib/ld-linux-x86-64.so.2.

È possibile tracciare quali librerie sono attualmente in fase caricati eseguendo:

versione
env LD_DEBUG=files,libs ./cat 
Problemi correlati