PDA

Visualizza la versione completa : [C++] Problema libc.so.6 su sistema Linux


CaptainHook8
16-06-2008, 11:49
Salve a tutti.
Ho compilato un programma in ambiente linux con il compilatore gcc dando i classici comandi:
./configure
make
make install
Ed il programma funziona.

Generato l'eseguibile l'ho trasportato su un altro pc con uguale architettura e chipset ma quando provo a lanciarlo mi dice:

libc.so.6 : aborted attemp to load ./mio_programma

Ora le librerie che servono al programma ci sono tutte (controllato dipendenze con ldd),per sul pc dove l'ho compilato ci sono le glibc, sull'altro le uclibc. Potrebbe essere questo il problema?
Ora poich sul secondo pc non posso compilare,come posso modificare il makefile in modo che usi le uclibc e la libc.so.0 invece che le glibc e la libc.so.6?

Grazie mille.

CaptainHook8
16-06-2008, 17:01
Nessuno sa dirmi il perch di questo errore:

libc.so.6 : aborted attemp to load ./mio_programma

Come posso modificare il makefile in modo da far usare il programma le uclibc invece che le glibc,e la libc.so.0 invece che la libc.so.6?

Per favore aiutatemi.... :bh: :master:

Grazie mille.

mondobimbi
16-06-2008, 18:47
Originariamente inviato da CaptainHook8
...

Generato l'eseguibile l'ho trasportato su un altro pc con uguale architettura e chipset ma quando provo a lanciarlo mi dice:
...


deve esserci la stessa distribuzione altrimenti non funziona e lo devi ricompilare.
ciao
sergio

810106
17-06-2008, 01:26
Ci potresti dire il nome del pacchetto cosi magari ti possiamo aiutare meglio... cmq, mai sentito sto ulibc ma se una piattaforma compatibile con linux puoi provare al fare dei soft-link da glibc.so.6
a ulibc.so.6 e a tutti i file che ti servono, non garantito che funzioni.

Come seconda alternativa potresti provare a compilare l'eseguibile con link statico:


$ ./configure --prefix=prefix LDFLAGS='-static -lc'
...
$ make CFLAGS='-O2' LDFLAGS='-static -lc' all
...
$ make LDFLAGS='-static -lc' install
...

Cmq nemmeno questo assicura il funzionamento, se ci sono dlopen all'interno dell'eseguibile e il pacchetto non ha libltdl sei ciulato... buona fortuna!

Loading