Centos

CentOS 中非標準 lib 目錄的 ldconfig 問題

  • December 22, 2011

我正在使用一個虛擬機(CentOS 5.3),它在主驅動器(包括 、 等)上的儲存空間非常/usr/usr/local。大多數儲存空間位於安裝到/mnt. 因此,在這個驅動器上,我創建了一個基本的安裝目錄(帶有 、 、 等子目錄binincludelib在那里安裝了一個庫。

[standage@vm142-46 ~]$ ls -lhp /mnt/lib
total 33M
-rw-r--r-- 1 standage iplant-everyone 21M Dec 21 16:29 libgenometools.a
-rwxr-xr-x 1 standage iplant-everyone 13M Dec 21 16:29 libgenometools.so

然後我嘗試使用我編寫的程式碼連結到該庫,但它給了我以下消息。

/usr/bin/ld: cannot find -lgenometools

我意識到我沒有更新ldconfig我創建的新安裝目錄,所以我繼續添加/mnt/lib/etc/ld.so.conf執行/sbin/ldconfig. 但是,當我嘗試再次連結我的程式碼時,我得到了同樣的錯誤。

我最終能夠通過創建符號連結來連結庫/usr/local/lib64

[standage@vm142-46 ~]$ sudo ln -s /mnt/lib/libgenometools.a /usr/local/lib64
[standage@vm142-46 ~]$ sudo ln -s /mnt/lib/libgenometools.so /usr/local/lib64

…但這並不能真正解決我原來的問題,它只是一個膠帶解決方案。我最初做錯了什麼,如何連結到我安裝的庫?

/etc/ld.so.conf僅影響動態連結器,即在執行時查找庫的位置。建構執行檔時,重要的是ld查找庫的路徑。指定這些的通常方法是傳遞-L選項;大多數configure腳本都有傳遞附加-L選項的方法。通常沒有辦法更改ld. 您可能會考慮更改 gcc 規範文件,但這將涉及更改下的文件/usr,而不是下的文件/etc

鑑於您的設置略顯笨拙,您可能需要查看above的聯合安裝。我不知道 CentOS 提供了哪些聯合掛載可能性(當然,有第三方選項,原生的或基於 FUSE 的)。/mnt``/usr

引用自:https://unix.stackexchange.com/questions/27369