Allora, il problema riscontrabile, che può avere mille cause, è il seguente (compilando qualunque cosa):
checking whether the C++ compiler works... noE andando a leggere il log del configure (cosa che non fa nessuno) si trova un messaggio simile a questo:
configure: error: in `/var/tmp/portage/app-portage/eix-0.23.3-r1/work/eix-0.23.3':
configure: error: C++ compiler cannot create executables
See `config.log' for more details
configure:3267: checking whether the C++ compiler worksoppure
configure:3289: x86_64-pc-linux-gnu-g++ -march=nocona -O2 -pipe -mssse3 -Wl,-O1 -Wl,--as-needed conftest.cpp >&5
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.3/cc1plus: error while loading shared libraries: /usr/lib64/libgmp.so.10: invalid ELF header
Sono casi diversi, il secondo potrebbe nascere indipendentemente oppure in seguito alla prima parte di operazioni descritte di seguito. Come dicevo, bisogna adattarsi e capire se può esser un problema collegato a questi casi...configure:3267: checking whether the C++ compiler works
configure:3289: x86_64-pc-linux-gnu-g++ -march=nocona -O2 -pipe -mssse3 -Wl,-O1 -Wl,--as-needed conftest.cpp >&5
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.3/cc1plus: error while loading shared libraries: /usr/lib64/libgmp.so.3: no such file o directory
Ora, la soluzione è semplice (certo, dopo che l'ho trovata io) ma delicata. In poche parole si costruisce un nuovo sistema in /mnt, si ricompila gcc e si copiano i file relativi a gmp nel sistema non funzionante:
Se dovesse servire:mkdir /mnt/gentoo
cd /mnt/gentoo
wget http://mirrors.linuxant.fr/distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3/stage3-amd64-20111208.tar.bz2 && wget http://mirrors.linuxant.fr/distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
tar xvjpf stage3-*.tar.bz2
tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
cp /etc/conf.d/net etc/conf.d /*cambiare l'ip*/
cp /etc/resolv.conf etc/
cp /etc/make.conf etc/
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"
eselect profile set x /*scegliere quello che si usa sulla propria installazione gentoo*/
emerge --sync
emerge gccexitcp -ad /mnt/gentoo/usr/lib64/libgmp* /usr/lib64/
ln -s libgmp.so.10.0.2 libgmp.so.3in modo che produca questo:
Non risolve il fatto che vada a cercare una libreria obsoleta, ma aggira il problema facendogli usare quella più recente.-rw-r--r-- 1 root root 1162942 dic 8 08:03 /usr/lib64/libgmp.a
-rw-r--r-- 1 root root 913 dic 8 08:03 /usr/lib64/libgmp.la
lrwxrwxrwx 1 root root 16 dic 24 09:14 /usr/lib64/libgmp.so -> libgmp.so.10.0.2
lrwxrwxrwx 1 root root 16 dic 24 09:14 /usr/lib64/libgmp.so.10 -> libgmp.so.10.0.2
-rwxr-xr-x 1 root root 456768 dic 8 08:03 /usr/lib64/libgmp.so.10.0.2
lrwxrwxrwx 1 root root 16 dic 24 10:34 /usr/lib64/libgmp.so.3 -> libgmp.so.10.0.2
-rw-r--r-- 1 root root 34530 dic 8 08:03 /usr/lib64/libgmpxx.a
-rw-r--r-- 1 root root 942 dic 8 08:03 /usr/lib64/libgmpxx.la
lrwxrwxrwx 1 root root 17 dic 24 09:14 /usr/lib64/libgmpxx.so -> libgmpxx.so.4.2.2
lrwxrwxrwx 1 root root 17 dic 24 09:13 /usr/lib64/libgmpxx.so.4 -> libgmpxx.so.4.2.2
-rwxr-xr-x 1 root root 18640 dic 8 08:03 /usr/lib64/libgmpxx.so.4.2.2
Fatto. Funziona tutto. Sono sempre il migliore.
2 commenti:
La soluzione "semplice" è reinstallare un sistema ex-novo e ricompilare tutto? Allora quella difficile da dove parte? xD
Ma no, l'unica cosa da compilare è gcc, tutto il procedimento, compilazione esclusa, dura sì e no 10 minuti :P
Il sistema base è composto dallo stage (tar che va estratto)e poi va tutto ricompilato, ma non serve farlo in questa procedura, basta limitarsi al compilatore ;)
Posta un commento