我已经编译了一个库,现在我应该运行ldconfig
.但是,我宁愿不修改/etc/ld.so.conf
,也不修改任何其他系统文件。是否可以在其他地方生成缓存,然后仅在编译选定的程序时使其可见?或者我应该为此目的手动LD_LIBRARY_PATH
设置?LD_RUN_PATH
答案1
您可以检查以下-f
选项LD配置:
-f 会议
使用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 挂载,可能会出现问题。