Linker在不接觸系統文件的情況下使用
在不接觸系統文件的情況下使用ldconfig
我已經編譯了一個庫,現在我應該執行
ldconfig
. 但是,我寧願不修改/etc/ld.so.conf
,也不修改任何其他系統文件。是否可以在其他地方生成記憶體,然後僅在編譯選定程序時使其可見?或者我應該為此手動設置LD_LIBRARY_PATH
和?LD_RUN_PATH
您可以檢查ldconfig
-f
的選項:-f conf
使用 conf 而不是 /etc/ld.so.conf。
如果你執行:
ldconfig -f custom.conf
具有足夠權限的使用者將修改
/etc/ld.so.cache
.ld
讀取/etc/ld.so.cache
,我不認為你可以讓它從不同的文件中讀取。由於您不想修改系統文件,您可以執行以下操作:
gcc -W -Wall -L/path_to_your_library -lyour_library test.c -o testo
建構你的 testo.c
然後:
export LD_LIBRARY_PATH=/path_to_your_library
執行它,儘管設置
LD_LIBRARY_PATH
調試幫助並嘗試更新版本的庫,但它在一般開發環境設置和部署中的使用被認為是不好的。更多你可以在這裡查看。另一種方法可能是使用
rpath
:unset LD_LIBRARY_PATH gcc -L/path_to_your_library -Wl,-rpath=/path_to_your_library -W -Wall -o testo testo.c -lyour_library
使用
rpath
方法,每個程序都可以獨立列出其共享庫位置。缺點:共享庫應安裝在固定位置。此外,我還沒有測試過,但如果庫引用 NFS 掛載可能會出現問題。