2010-11-08 53 views
5

我的鏈接線海合會包括以下連續兩個條目:gcc鏈接器如何選擇/ usr/lib與/ usr/lib64來獲得庫解析?

-lrt 
-lpam 

這似乎擴展爲:

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

爲什麼RT決心lib64的,而PAM是決心lib和結果失敗:

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

因爲它只有32位ELF。有一個/usr/lib64/libpam.so是64位的ELF,爲什麼它沒有被佔用?

+0

你使用的是libtool嗎? – Flexo 2010-11-08 00:18:29

+1

@awoodland我怎麼知道? – WilliamKF 2010-11-08 00:20:06

回答

1

嘗試使用-m32強制32位。還要檢查您正在編譯的.bashrc或.bash_profile設置的任何環境變量,以確定是否有任何交叉連接。

+0

諾里德但我想強制64位。嘗試-m64和仍然/usr/lib/libpam.so被拿起。 – WilliamKF 2010-11-08 00:22:05

+0

你正在運行什麼操作系統?你是否已經通過apt-get或dpkg(在Debian或Ubuntu上)從分發包中重新安裝了必要的庫。另外 - 你確定.bashrc和.bash_profile是乾淨的嗎? – 2010-11-08 02:43:14

+0

這是Linux Centos 5.機器和構建的所有其他方面都很好,它只是一個來自32位版本而不是64位版本的庫,即使兩者都可用。 – WilliamKF 2010-11-08 04:14:48