[Fedora 4] Problèmes avec l'éditeur de lien et ld.so.conf

Problèmes avec l'éditeur de lien et ld.so.conf [Fedora 4] - Installation - Linux et OS Alternatifs

Marsh Posté le 21-09-2005 à 09:07:27    

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
/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


 
Vous remarquerez déjà la bizzarerie des 2 liens symboliques /lib/libgcc_s.so.1  :

lrwxrwxrwx  1 root root      28 sep 20 17:54 libgcc_s-so.1 -> libgcc_s-4.0.0-20050520.so.1
lrwxrwxrwx  1 root root      28 sep 20 17:55 libgcc_s.so.1 -> libgcc_s-4.0.0-20050520.so.1


 
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...  :cry:  
 
J'ai dû oublier quelque chose (sûrement une des bases) mais quoi ??? Je suis un peu newbie donc.... Si un sujet traite de ce problème, n'hésitez pas à me transmettre le lien (j'ai cherché sur le forum sans succès).  Merci pour votre aide ! :jap:

Reply

Marsh Posté le 21-09-2005 à 09:07:27   

Reply

Marsh Posté le 21-09-2005 à 09:40:39    

Essaie en rajoutant dans ta variable LD_LIBRARY le chemin où tu peux trouver tes librairies, un truc du genre export LD_LIBRARY=$LD_LIBRARY:/ton/path
 
Sinon, updatedb te mets à jour la liste de fichiers pour quand tu fais une recherche via locate ;) T'es pas obligé de relancer cette commande à chaque fois que tu changes tes librairies ;)

Reply

Marsh Posté le 21-09-2005 à 09:47:39    

:jap: merci pour cette proposition. Je viens d'essayer après avoir fait :

# 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
# make clean
# make
/usr/bin/ld: ne peut trouver -lgcc


:cry:

Reply

Marsh Posté le 21-09-2005 à 09:53:52    

Et en lancant un ldconfig après le export LD_LIBRARY ?

Reply

Marsh Posté le 21-09-2005 à 09:58:31    

malheureusement ça n'a pas l'air de marcher non plus :
 

[user]# export LD_LIBRARY=/usr/lib/gcc-lib/i386-redhat-linux/4.0.0/
[user]# /sbin/ldconfig
/sbin/ldconfig: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
[user]# su
[root]# export LD_LIBRARY=/usr/lib/gcc-lib/i386-redhat-linux/4.0.0/
[root]# /sbin/ldconfig
[root]# exit
[user]# make clean
[user]# make
/usr/bin/ld: ne peut trouver -lgcc


 

Reply

Marsh Posté le 21-09-2005 à 10:03:11    

Tu as toujours le path dans ton /etc/ld.so.conf ?

Reply

Marsh Posté le 21-09-2005 à 10:12:14    

oui :  
 

# more /etc/ld.so.conf
 
include ld.so.conf.d/*.conf
/usr/lib/gcc-lib/i386-redhat-linux/4.0.0


 
je ne vois pas ce qui bloque...

Reply

Marsh Posté le 21-09-2005 à 10:21:00    

Hum, je sais pas alors, je passe :/
 
Ceci dit, tu peux virer le paquet rpm que t'avais installé, à mon avis, il fait plus conflits qu'autre chose là (c'est pas une histoire de version de gcc qui déconne).
 
Et dernier truc, si tu fais un lien de /lib/libgcc_s.so.1  vers /lib/libgcc.so ? (et ldconfig, toussa [:petrus75] )

Reply

Marsh Posté le 21-09-2005 à 10:49:13    

Y'a aussi un autre truc bizarre :

[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.


 
 :ouch: Qu'est-ce qui se passe ?


Message édité par benj63 le 21-09-2005 à 13:48:58
Reply

Marsh Posté le 21-09-2005 à 11:54:28    

Et si tu fais un rpm -e libgcc-3.2.2-5, mais en root ? (ou via sudo)
 
Les fichiers qui gènent ldconfig, ils ont quoi ? (taille = 0, lien vers rien, autre ?)

Reply

Marsh Posté le 21-09-2005 à 11:54:28   

Reply

Marsh Posté le 21-09-2005 à 13:54:36    

Il doit y avoir un bug dans mon install du package gcc 3.2.2-5 :

# 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)


 
Et à priori les fichiers qui embêtent ldconfig sont bien vides :

[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


 
Y'a-t'il un moyen de corriger cela ?

Reply

Marsh Posté le 22-09-2005 à 08:42:51    

On m'a dit sur un autre forum que j'avais fait des bêtises en supprimant libgcc-3.2.2-5, et que ma base de RPM était à présent moitié en vrac... Auriez-vous une solution pour corriger ce problème ? :sweat:

Reply

Marsh Posté le 22-09-2005 à 15:02:00    

:bounce: au moins pour la base des RPM censée être en vrac ??  :cry:


Message édité par benj63 le 23-09-2005 à 08:57:38
Reply

Marsh Posté le 22-09-2005 à 15:04:36    

Hum, si c'est toi qui a installé un nouvelle version version de libgcc, c'est pas vraiment une betise de l'avoir supprimée.
Essaie peut-être de reinstaller ton ancienne version de libgcc (celle que tu avais au début). [:spamafote]

Reply

Marsh Posté le 22-09-2005 à 15:15:18    

Voilà ce qu'on m'a dit  [:petrus75] :
 

Citation :

Voici la liste de tes horreurs :
1. rpm -i --force d'un paquet provenant d'une autre distrib. Il n'y a jamais eu de libgcc-3* dans fedora core 4.
2. rajout d'un path inutile dans ld.so.conf
3. '*' non-despecialisee pour des requetes a la base rpm
4. Tentative de desinstallation d'un paquet par son nom de fichier au lieu de donner comme il se doit son nom (et eventuellement sa version-release)
5. annihilation de la coherence de la base rpm.
 
Conclusion : tu as fait n'importe quoi. Ton systeme est maintenant sans dessus dessous. Si tu as installe la libgcc avec un force, les dieux seuls savent combien de rpm --nodeps tu as du invoquer. En retirant la vieille libgcc tu as probablement effacer des fichiers et des fournitures (provides) que d'autres paquets fournissaient.
 
Met ton systeme au carre ou re-installe le, si tu n'es pas capable de faire le menage. Installe les paquets de developpement dont tu as besoin et surtout qui proviennent de ta distribution et tout se passera beaucoup mieux.


 
Par contre, il ne m'a pas aidé pour sortir de ce mauvais pas... La version que j'avais au début était libgcc 4, tu penses donc qu'il faut que la réinstalle avec un ptit rpm -i --force ..libgcc..4.rpm ?


Message édité par benj63 le 23-09-2005 à 08:57:30
Reply

Marsh Posté le 22-09-2005 à 15:20:53    

Oui, ça doit être un truc du genre. Tu dois pouvoir trouver le fichier sur ton cd, ou sur dans la base des paquets Fedora (chuis pas un connaisseur de Fedora :o )
 
Sinon, il a pas complètement tord. Après, je sais pas exactementles conséquences qu'à la modification de libgcc sur le système. Je sais pas si c'est aussi grave qu'il le dit.
 
Regarde également si tu n'a pas des options ou des outils rpm permettant de voir si ta base est en bon état, si il manque pas des paquets, etc. Hésites pas à réinstaller avec les paquets d'origines si il faut.

Reply

Marsh Posté le 22-09-2005 à 16:04:52    

Bon à priori j'ai réussi à récupérer le problème : j'ai recopié le /lib/libgcc_s-4.0.0-20050520.so.1 (que j'avais corrompu) à partir d'un autre poste sous Fedora, puis j'ai modifié le lien symbolique libgcc_s.so.1 en le faisant pointer vers /lib/libgcc_s-4.0.0-20050520.so.1.
 
La commande rpm fonctionne à nouveau, et n'affiche plus ce message :

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)


 :)  
 
Je me retrouve donc à peu près avec ce que j'avais auparavant... et j'en reviens au souci que ld ne trouve toujours pas libgcc... Si quelqu'un a d'autres solutions... En tout cas, merci multani pour tes conseils, tu es l'un des rares à m'avoir aidé... ;)


Message édité par benj63 le 23-09-2005 à 08:57:17
Reply

Marsh Posté le 22-09-2005 à 16:17:55    

Si c'est pas indiscret, c'est quoi que tu essaies de compiler et qui a besoin de libgcc ?

Reply

Marsh Posté le 22-09-2005 à 16:29:55    

c'est un module qui fait partie d'un gros programme de simulation... qui fonctionnait parfaitement sous RedHat 9... Ptetre en installant les RPM de type devel, cela corrigerait le problème ?


Message édité par benj63 le 23-09-2005 à 08:56:56
Reply

Marsh Posté le 22-09-2005 à 17:33:03    

Essaie [:spamafote] (ça craint rien ça [:dawa] )

Reply

Marsh Posté le 23-09-2005 à 08:55:54    

pour installer les paquets devel, si je fais un ptit

yum install devel*


ça marchera ou non ? :ange:


Message édité par benj63 le 23-09-2005 à 08:56:23
Reply

Marsh Posté le 23-09-2005 à 09:38:29    

[:ciler]
 
Installes que ceux dont tu auras besoin :o

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed