7

我正在构建一个链接一些共享库的程序。它们包含在相对于我的项目的 lib/ 目录中。

我遇到的问题是我希望可执行文件知道在相对 ../lib 目录中搜索库。这可能吗?

我真的不想更改 ld_library_path 或将文件移动到根拥有的标准路径之一。

当 .so 文件位于 strace/ldd 显示的标准路径之一上时,我能够编译可执行文件并运行它

4

1 回答 1

8

您可以使用-rpath来自链接器的(使用 ld 作为链接器)。

从其手册页:

-rpath=目录

将目录添加到运行时库搜索路径。这在将 ELF 可执行文件与共享对象链接时使用。所有 -rpath 参数都连接起来并传递给运行时链接器,运行时链接器使用它们在运行时定位共享对象。-rpath 选项也用于定位明确包含在链接中的共享对象所需的共享对象;请参阅 -rpath-link 选项的说明。如果在链接 ELF 可执行文件时未使用 -rpath,则将使用环境变量“LD_RUN_PATH”的内容(如果已定义)。

于 2014-09-30T22:56:40.153 回答