如何防止动态链接器中的绝对路径

时间:2015-06-08 00:56:35

标签: premake

我有一个包含各种项目的解决方案,其中一个是主要的可执行文件,其余的是可执行文件所依赖的库。每个编译和链接都很好。但是,尝试启动可执行文件会产生奇怪的结果。使用ldd,我看到可执行文件试图找到像这样的库:

../bin/debug/libBlahBlah.so => not found

但是,对于每个项目,我将“bin / debug”(这些库的输出目录)声明为libdirs条目,并通过添加“BlahBlah”作为链接来链接库,其中“BlahBlah” “是项目的名称。

我甚至不确定如何在没有预制的情况下实现这一目标。任何帮助表示赞赏。

最初的目的是让库位于可执行文件旁边,然后设置一个RPATH,用于搜索可执行文件旁边的库。按照它现在的方式,它搜索相对于可执行文件的绝对路径...我无法弄清楚如何将其关闭。

我正在使用premake5。我试着每晚使用并编译自己。然而,上游目前尚未编译。

1 个答案:

答案 0 :(得分:0)

如果您使用的是最新的alpha或Premake5源,您可以使用“RelativeLinks”标志来使用-L / -l而不是库的相对路径:

project "MyProject"
   flags "RelativeLinks"

你仍然需要正确设置rpath;你可以使用buildoptions()和编译器的相应命令行标志来做到这一点。也许(未经测试):

buildoptions "-Wl,-rpath=."

这也适用于Premake 4。