在编译时确定共享库依赖项的位置

在编译时确定共享库依赖项的位置

是否可以在编译时告诉要构建的二进制文件在运行时找到给定库的路径?例如,当我链接到非标准位置的共享库时,当我想运行生成的二进制文件时,我必须将该共享库的路径添加到 LD_LIBRARY_PATH,并且我想知道是否存在一个选项省去该步骤并让二进制文件在运行时知道共享库的位置。

Ubuntu 14.04,海湾合作委员会。

答案1

-Wl,-rpath,'/path/to/library'是的,通过添加GCC 的参数,这是可能的。这将告诉链接器-rpath '/path/to/library'在调用时运行。

通常,您可以通过添加以下内容为大多数基于 autoconf 的 make 文件添加此内容:

LDFLAGS=-Wl,-rpath=/path/to/library

编译时的环境。

照常,维基百科的 RPATH 文章有所有详细信息。

答案2

是的。这些步骤取决于所使用的编译器和链接器。

对于GNU cc编译器,添加-Wl,-rpath=/home/me/lib会将/home/me/lib添加到运行时搜索需要链接的库的位置。

相关内容