Autotools - libtool:链接:-rpath与MacOS上的@executable_path

时间:2017-08-22 12:29:31

标签: macos autotools libtool rpath

我试图在MacOS上使用Autotools构建一个框架。这个框架包含一个库,我们称它为libmytools.dylib,以及一个使用该库的可执行文件。 我想要的是在运行时动态链接这个库。

可执行文件通常安装到/Library/Frameworks/mytools.Framework/Versions/Current/Commands/mytools 通常安装库 /Library/Frameworks/mytools.Framework/Versions/Current/Libraries/libmytools.dylib

如果框架安装在该位置,一切正常,但是当机器上没有安装框架但是它只嵌入到另一个项目中时,无法找到该库。

我需要的是一个所谓的" Runpath Dependent Library"如下所述: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html

所以我做的是将mytools_LDFLAGS = -rpath @executable_path/../Libraries添加到makefile。

但遗憾的是,libtool拒绝将我的可执行文件与动态-rpath链接起来 并显示以下错误:libtool: link: only absolute run-paths are allowed.

我也试过了mytools_LDFLAGS = -dynamic -rpath @executable_path/../Libraries但结果是一样的......

我做错了什么?

1 个答案:

答案 0 :(得分:4)

这是当前的libtool设计。 libtool补丁列表中的This thread可能有一个适合您的建议。建议是:

  

正常构建,然后使用install_name_tool

进行后处理

如果您不喜欢这个建议,可以调整从该线程开始的hacky补丁适合您,并将补丁应用于生成的libtool作为{{3}的一部分配置。