2010-11-08 25 views
5

Ma ligne de lien vers gcc comprend les deux entrées successives suivantes:Comment l'éditeur de liens gcc choisit/usr/lib par rapport à/usr/lib64 pour la résolution de la bibliothèque?

-lrt 
-lpam 

Et cela apparaît développé comme:

/usr/lib64/librt.so /usr/lib/libpam.so 

Pourquoi rt a décidé de lib64 alors pam est résolu à lib et ne voit donc pas :

/usr/lib/libpam.so: could not read symbols: File in wrong format 

Comme il s'agit seulement d'ELF 32 bits. Il y a un fichier /usr/lib64/libpam.so avec 64 bits ELF, pourquoi n'est-il pas pris?

+0

utilisez-vous libtool? – Flexo

+1

@awoodland Comment le saurais-je? – WilliamKF

Répondre

1

Essayez d'utiliser -m32 pour forcer 32 bits. Inspectez également les vatiables d'environnement définies par votre fichier .bashrc ou .bash_profile que vous compilez sous pour déterminer si quelque chose est câblé.

+0

Norrid Mais je veux forcer 64 bits. Essayé -m64 et toujours /usr/lib/libpam.so est ramassé. – WilliamKF

+0

Quel système d'exploitation utilisez-vous? Avez-vous réinstallé les bibliothèques nécessaires à partir de leur paquet de distribution via apt-get ou dpkg (sur Debian ou Ubuntu). Aussi - avez-vous vérifié que .bashrc et .bash_profile sont propres? –

+0

Ceci est Linux Centos 5. Tous les autres aspects de la machine et de la construction sont bien, c'est juste cette bibliothèque qui vient de la version 32 bits au lieu de la version 64 bits, même si les deux sont disponibles. – WilliamKF