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

ndr*_*isg 2 macos autotools rpath libtool

我正在尝试在 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,但结果是一样的......

我究竟做错了什么??

lda*_*v1s 5

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

正常构建,然后使用 install_name_tool 进行后处理

如果您不喜欢这个建议,可以调整启动该线程的黑客补丁来为您工作,并将补丁应用到作为配置的libtool一部分生成的补丁bootstrap.sh