1

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

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

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

我什至不确定如何在没有预制的情况下完成此操作。任何帮助表示赞赏。

最初的意图是让库位于可执行文件旁边,然后设置一个 RPATH 来搜索可执行文件旁边的库。以现在的方式,它会搜索相对于可执行文件的绝对路径……我不知道如何将其关闭。

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

4

1 回答 1

1

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

project "MyProject"
   flags "RelativeLinks"

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

buildoptions "-Wl,-rpath=."

这也应该适用于 Premake 4。

于 2015-06-08T12:20:46.663 回答