根據文檔忽略,GCC在LD_LIBRARY_PATH中查找路徑來鏈接共享庫但是在我看來,它被忽略了!LD_LIBRARY_PATH被GCC
echo $LD_LIBRARY_PATH
- >:/home/mehrdad/usr/lib
(所以LD_LIBRARY_PATH
被currectly設置)
我已經在 「/home/mehrdad/usr/lib
」 但libfoo.so
: gcc main.c -lfoo
返回錯誤:
/usr/bin/ld: cannot find -lfoo
collect2: error: ld returned 1 exit status
所以有什麼問題???是LD_LIBRARY_PATH
已棄用???!
gcc main.c -L/home/mehrdad/usr/lib -lfoo
通過公正,還我可以成功執行的a.out:
但我可以成功地與明確的命令鏈接
./a.out
似乎LD_LIBRARY_PATH由OS庫加載器,而且敬重不是GCC!
我的環境: 操作系統:CentOS的7 編譯器:GCC(海灣合作委員會)4.8.5 20150623(紅帽4.8.5-4)
粗略地說,當你的可執行文件(真正的動態鏈接器)在運行時查找庫時,即在啓動程序時,會使用'LD_LIBRARY_PATH'。在編譯時,應該使用'-L'選項設置庫路徑。 –
「*根據文檔,GCC在LD_LIBRARY_PATH中查找用於鏈接共享庫的路徑*」您可以鏈接到這些文檔嗎? (也許你正在將'LIBRARY_PATH'與'LD_LIBRARY_PATH'混淆?也許你的文檔是。) –
謝謝你們!我真的只聽說過LD_LIBRARY_PATH! – mehrdad