我试图在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
但结果是一样的......
我做错了什么?
答案 0 :(得分:4)
这是当前的libtool设计。 libtool补丁列表中的This thread可能有一个适合您的建议。建议是:
正常构建,然后使用install_name_tool
进行后处理
如果您不喜欢这个建议,可以调整从该线程开始的hacky补丁适合您,并将补丁应用于生成的libtool
作为{{3}的一部分配置。