Path
/etc/ld.so.conf 不包含 /usr/lib
我
pkg-config
用來在 c++ 編譯期間幫助提供正確的庫。據我了解,它在由/etc/ld.so.conf
. 我ld.so.conf
通過指向以下的包含指令引用了以下庫位置/etc/ld.so.conf.d/*.conf
:/usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
問題是我需要的庫
/usr/lib
預設情況下。我可以在這條路徑中添加
/etc/ld.so.conf
自己或移動庫還是推薦的做法是什麼?
pkg-config 根本不使用 ld.so.conf,它通常將配置文件儲存在
/usr/lib/pkgconfig/
, (如果需要,請指定 PKG_CONFIG 變數)IE
/usr/lib/pkgconfig/libmtp.pc
# libmtp pkg-config source file prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: libmtp Description: libmtp is a library for accessing Media Transfer Protocol devices Version: 1.1.5 Requires: libusb-1.0 Conflicts: Libs: -L${libdir} -lmtp Libs.private: -lgcrypt Cflags: -I${includedir}
您可以在那裡找到 cflags、libs 等,這就是 pkg-config 提供所需命令參數的方式。
所以,對於你自己的庫,創建一個類似的文件(在這裡閱讀文件)
為了澄清
/etc/ld.so.conf
:此文件由動態(執行時)連結器/載入器(ld-linux.so
在 Linux 上)使用,它解析載入以執行的二進製文件中的符號(這也包括共享庫)。這與連結器形成對比,連結器ld
用於將多個對象/歸檔文件組合在一起並解決它們的依賴關係。動態連結器
/etc/ld.so.conf
在載入二進製文件時檢查應在其中查找共享庫的列表目錄。除了那裡提到的路徑之外,連結器還搜尋其預設路徑(在 Linux 上/lib
,/usr/lib
通常更改lib64
為 64 位載入器),除非二進製文件連結到一個明確禁用此功能的標誌(-x nodefaultlib
在 binutils’ 中ld
),在這種情況下它只有榮譽ld.so.conf
。