linux 二进制文件必须识别并使用本地库

linux 二进制文件必须识别并使用本地库

我们如何让自己的 Linux 二进制文件识别并使用它的库/依赖项。在本地库中,即在 /usr/local/lib 中,因为我们将其本身安装在 /usr/local/bin 中?

答案1

库搜索路径可以在系统级别通过数据库中的条目进行控制/etc/ld.so.cache,也可以在应用程序级别通过设置环境变量进行控制LD_LIBRARY_PATH

全系统

将包含所需库的目录添加到/etc/ld.conf.d.在某些系统上,您可能需要将它们直接添加到/etc/ld.conf.

运行ldconfig以更新库数据库/etc/ld.so.cache

应用

设置或扩展LD_LIBRARY_PATH以包含包含应用程序上下文所需库的目录(或多个目录):

LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" /usr/local/bin/your_app arg1 arg2…

如果您可以保证它LD_LIBRARY_PATH是空的,或者不包含与您的应用程序相关的任何内容,您可以简化此调用:

LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/your_app arg1 arg2…

在任何一种情况下,如果您已经拥有,/usr/local/bin$PATH可以通过不使用应用程序的显式路径来简化。例如,

LD_LIBRARY_PATH=/usr/local/lib your_app arg1 arg2…

答案2

除了 @roaima 的答案之外,您还可以编译应用程序以显式查找本地库。添加

-Wl,-rpath /usr/local/lib

到您的编译命令(假设您正在使用gcc)。

相关内容