Centos
CentOS 中非標準 lib 目錄的 ldconfig 問題
我正在使用一個虛擬機(CentOS 5.3),它在主驅動器(包括 、 等)上的儲存空間非常
/usr
小/usr/local
。大多數儲存空間位於安裝到/mnt
. 因此,在這個驅動器上,我創建了一個基本的安裝目錄(帶有 、 、 等子目錄bin
)include
並lib
在那里安裝了一個庫。[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