2011-05-07 166 views
2

我運行Ubuntu 10.10和使用共享庫libcrypto.so 當編譯它,雖然我有了選擇-lcrypto一個Makefile C程序,我得到這個消息:共享庫

/usr/bin/ld: skipping incompatible ./libcrypto.so when searching for -lcrypto 
/usr/bin/ld: cannot find -lcrypto 

我沒有這樣做之前導出當前目錄:

export LD_LIBRARY_PATH=D_LIBRARY_PATH:.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 

那麼我的圖書館有什麼問題,我該怎麼辦?

+2

不應該導出LD_LIBRARY_PATH = $ LD_LIBRARY_PATH :. ? – 2011-05-07 19:33:47

+0

是的,我的寫作錯誤! – Madrugada 2011-05-09 12:44:56

回答

2

第一個錯誤消息可能表示您有一個64位庫,但正在做一個32位編譯或32位庫,但正在做一個64位彙編。

運行file libcrypto.so,看看它是什麼類型,然後調整您的構建(啓動 - 刪除所有的目標文件),同時按選項「-m32」或「-m64」獲取寫構建模式。如果你不能工作了怎麼回事,以獲取進入makefile,使用:

make CC="gcc -m32" CXX="g++ -m32" 

(或64位版本,如果這就是你以後是什麼)。

+1

你是對的,libcrypto是32位庫,而我在64位ubuntu上運行。你在Makefile中告訴我把:gcc -m32 -lrt ......;無論如何,我得到這個消息:致命的錯誤:gnu/stubs-32.h:沒有這樣的文件或目錄 – Madrugada 2011-05-09 12:54:58

+1

@Madrugada:我不知道什麼是缺少的標題意味着 - 你有沒有嘗試過32位編譯之前,和如果是這樣,它工作嗎?該消息可能表明您需要重新配置您的軟件,或者它可能會告訴您,您的系統沒有設置爲執行32位版本,或者...只需獲取64位版本的'libcrypto.so'。 – 2011-05-09 13:00:02

2

你能張貼此輸出:

$ file ./libcrypto.so 

,並檢查它是爲您的機器正確的版本? (即32比64位等?)

+0

ubuntu 10.10,64b – Madrugada 2011-05-09 12:45:08