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

电脑快

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

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

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

我什至不知道如何在没有预制的情况下完成此任务。任何帮助表示赞赏。

最初的意图是让库位于可执行文件的旁边,然后设置一个RPATH,在可执行文件旁边搜索该库。用现在的方式,它搜索相对于可执行文件的绝对路径...我不知道如何删除它。

我正在使用premake5。我试图每晚使用并编译自己。但是,上游目前尚未编译。

珀金斯

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

project "MyProject"
   flags "RelativeLinks"

但是,您仍然需要正确设置rpath。您可以使用buildoptions()和适用于您的编译器的命令行标志来实现。可能(未试用):

buildoptions "-Wl,-rpath=."

这也应该在Premake 4中起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章