
我正在嘗試安裝原始緩衝區Redhat 系統(Amazon EC2 的 Linux 版本)上的函式庫。我運行configure
, make
,make install
沒有出現任何問題,並且.so
庫被複製到/usr/local/lib
.由於 Redhat/usr/local/lib
中不包含該目錄/etc/ld.so.conf
,因此我添加了它,然後運行ldconfig
以更新連結。
我的問題是,無論出於何種原因,即使它位於目錄中ldconfig
,也沒有拾取。libprotobuf.so
/usr/local/lib
這是輸出ls -l /usr/local/lib
:
total 61336
-rw-r--r-- 1 root root 17654940 Mar 26 02:39 libprotobuf.a
-rwxr-xr-x 1 root root 994 Mar 26 02:39 libprotobuf.la
-rw-r--r-- 1 root root 1948106 Mar 26 02:39 libprotobuf-lite.a
-rwxr-xr-x 1 root root 1029 Mar 26 02:39 libprotobuf-lite.la
lrwxrwxrwx 1 root root 25 Mar 26 02:39 libprotobuf-lite.so -> libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root 25 Mar 26 02:39 libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
-rwxr-xr-x 1 root root 893083 Mar 26 02:39 libprotobuf-lite.so.7.0.0
lrwxrwxrwx 1 root root 20 Mar 26 02:39 libprotobuf.so -> libprotobuf.so.7.0.0
lrwxrwxrwx 1 root root 20 Mar 26 02:39 libprotobuf.so.7 -> libprotobuf.so.7.0.0
-rwxr-xr-x 1 root root 7326093 Mar 26 02:39 libprotobuf.so.7.0.0
-rw-r--r-- 1 root root 25883264 Mar 26 02:39 libprotoc.a
-rwxr-xr-x 1 root root 1010 Mar 26 02:39 libprotoc.la
lrwxrwxrwx 1 root root 18 Mar 26 02:39 libprotoc.so -> libprotoc.so.7.0.0
lrwxrwxrwx 1 root root 18 Mar 26 02:39 libprotoc.so.7 -> libprotoc.so.7.0.0
-rwxr-xr-x 1 root root 9071740 Mar 26 02:39 libprotoc.so.7.0.0
drwxr-xr-x 2 root root 4096 Mar 26 02:39 pkgconfig
這是輸出ldconfig -v | grep protobuf
:
libprotobuf.so.7 -> libprotobuf.so.7.0.0
libprotobuf-lite.so.7 -> libprotobuf-lite.so.7.0.0
我需要做什麼才能被libprotobuf
連結器識別?
編輯:當我嘗試直接連結庫時,出現此錯誤:
ldconfig: Ignored file /usr/local/lib/libprotobuf.so since it is not a regular file.
我嘗試複製libprotobuf.so.7.0.0
,libprotobuf.so
使其不再是符號鏈接,這修復了錯誤,但我的鏈接器仍然找不到libprotobuf
.
答案1
ld.so.conf
僅由運行時動態連結器使用。ld
我們根本不這樣做 - 您需要/usr/local/lib
作為連結器搜尋目錄傳遞(ld
如果您直接呼叫它,則直接傳遞,或透過編譯器傳遞)。
對於ld
、GCC(或 clang,可能還有很多其他編譯器),您可以使用該-L
標誌來執行此操作。