在不接触系统文件的情况下使用“ldconfig”

在不接触系统文件的情况下使用“ldconfig”

我已经编译了一个库,现在我应该运行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 挂载,可能会出现问题。

相关内容