Bonjour,
Je souhaiterais compiler sous Fedora 4 (2.6.11-1.1369_FC4smp) un logiciel que j'utilisais jusqu'à présent sous RedHat 9.
Seulement, il me cause quelques problèmes avec ld ; lors du make, j'obtiens :
/usr/bin/ld: ne peut trouver -lgcc
Or, la librairie libgcc 4.0.0 est bien installée sur mon ordi :
# locate libgcc
/lib/libgcc_s-4.0.0-20050520.so.1
/lib/libgcc_s.so.1
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/adalib/libgccprefix.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc_eh.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc_s.so
Sachant que la compilation de ce programme fonctionnait bien sous RedHat 9, avec la librairie libgcc 3.2.2-5, j'ai décidé de l'installer à partir du RPM qu'on peut trouver sur le web (en tant que root) :
# rpm -i --force libgcc-3.2.2-5.i386.rpm
Ne sachant pas exactement comment installer une librairie, j'ai cherché des précisions sur le web et j'ai exécuté les commandes suivantes (sans trop savoir ce qu'il en retournait, je l'avoue) (en tant que root) :
ldconfig
updatedb
Au final, voici ce que j'ai obtenu :
# locate libgcc
/lib/libgcc_s-4.0.0-20050520.so.1
/lib/libgcc_s-3.2.2-20030225.so.1
/lib/libgcc_s-so.1
/usr/lib/openoffice.org1.9.104/program/libgcc3_uno.so
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/adalib/libgccprefix.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc_eh.a
/usr/lib/gcc/i386-redhat-linux/4.0.0/libgcc_s.so
/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/libgcc.a
/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/libgcc_eh.a
/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/libgcc_s.so
Comme ma compilation retournait toujours :
/usr/bin/ld: ne peut trouver -lgcc
J'ai décidé de modifier le fichier /etc/ld.so.conf (en tant que root) :
include ld.so.conf.d/*.conf
/usr/lib/gcc-lib/i386-redhat-linux/4.0.0
Après avoir relancé un ptit coup de ldconfig et updatedb, je suis parvenu à compiler un peu + loin le programme (en tant que root). Le problème, c'est que je dois compiler le programme en tant qu'utilisateur. Or, lorsque je suis revenu en tant qu'utilisateur, ld ne trouvait toujours pas la librairie gcc !! J'ai essayé de redémarrer le PC... En vain, puisque ni en tant qu'utilisateur, ni en tant que root, ld ne retrouve libgcc...
Ensuite, j'ai essayé de changer LD_LIBRARY :
# echo $LD_LIBRARY
étonnament cette commande ne me retourne rien, c'est normal ?
# export LD_LIBRARY=$LD_LIBRARY:/usr/lib/gcc-lib/i386-redhat-linux/4.0.0
# echo $LD_LIBRARY
:/usr/lib/gcc-lib/i386-redhat-linux/4.0.0
# ldconfig
# make clean
# make
/usr/bin/ld: ne peut trouver -lgcc
Ca ne marche toujours pas !
J'ai ensuite essayé de supprimer le libgcc 3.2 que j'avais installé en trop :
[root]# rpm -e libgcc-3.2.2-5.i386.rpm
erreur: le paquetage libgcc-3.2.2-5.i386.rpm n'est pas installé
[root]# rpm -q -a libgcc*
[root]# exit
[user]# rpm -q -a libgcc*
libgcc-4.0.0-8
libgcc-3.2.2-5
[user]# rpm -e libgcc-3.2.2-5
erreur: can't create transaction lock on /var/lib/rpm/__db.000
root ne semble pas voir les packages libgcc (et donc je ne peux pas le supprimer). Je l'avais pourtant installé en tant que root en faisant rpm -i --force...
[root]# rm -f libgcc_s-so.1
[root]# ln -s /lib/libgcc_s-4.0.0-20050520.so.1 libgcc_s.so.1
[root]# ll
lrwxrwxrwx 1 root root 33 sep 21 10:38 libgcc_s.so.1 -> /lib/libgcc_s-4.0.0-20050520.so.1
[root]# ldconfig
[root]# ll
lrwxrwxrwx 1 root root 33 sep 21 10:38 libgcc_s.so.1 -> /lib/libgcc_s-4.0.0-20050520.so.1
[root]# export LD_LIBRARY=/usr/lib/gcc-lib/i386-redhat-linux/4.0.0/
[root]# ldconfig
ldconfig: File /usr/lib/gcc-lib/i386-redhat-linux/4.0.0/libgcc_s.so is empty, not checked.
ldconfig: File /lib/libgcc_s-4.0.0-20050520.so.1 is empty, not checked.
ldconfig: File /lib/libgcc_s.so.1 is empty, not checked.
Et en tant que root :
# rpm -e libgcc-3.2.2-5
rpm: /lib/libgcc_s.so.1: version `GCC_3.3.1' not found (required by /usr/lib/librpmio-4.4.so)
rpm: /lib/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6)
A priori les fichiers qui embêtent ldconfig sont vides (étrange, je ne les ai pas touchés !):
[root]# cd /lib
[root]# ll
-rwxr-xr-x 1 root root 0 sep 21 10:48 libgcc_s-4.0.0-20050520.so.1
lrwxrwxrwx 1 root root 28 sep 21 10:48 libgcc_s.so.1 -> libgcc_s-3.2.2-20030225.so.1
-rwxr-xr-x 1 root root 30324 fév 25 2003 libgcc_s-3.2.2-20030225.so.1
[root]# cd /usr/lib/gcc-lib/i386-redhat-linux/4.0.0/
[root]# ll
lrwxrwxrwx 1 root root 18 aoû 25 09:52 libgcc_s.so -> /lib/libgcc_s.so.1
En plus, maintenant si j'essaie d'installer un package (comme YUM), j'obtiens ceci :
rpm -i yum-2.4.0-0.fc4.noarch.rpm
rpm: /lib/libgcc_s.so.1: version `GCC_3.3.1' not found (required by /usr/lib/librpmio-4.4.so)
rpm: /lib/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6)
:-o
Que faire pour sortir de cette situation, et surtout pour que je puisse compiler mon programme avec libgcc qu'il ne trouve pas ?!! Merci d'avance pour toutes vos idées/conseils !