Autotools - libtool: link: -rpath with @executable_path on MacOS
Autotools - libtool: link: -rpath with @executable_path on MacOS
我正在尝试在 MacOS 上使用 Autotools 构建一个框架。这个框架包含一个库,我们称之为 libmytools.dylib,以及一个使用该库的可执行文件。
我想要的是在运行时动态地 link 这个库。
可执行文件通常安装到 /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 拒绝 link 我的可执行文件使用动态 -rpath
并显示以下错误:libtool: link: only absolute run-paths are allowed.
我也试过mytools_LDFLAGS = -dynamic -rpath @executable_path/../Libraries
但是结果是一样的...
我做错了什么??
这是当前的 libtool 设计。来自 libtool 补丁列表的 This thread 可能有适合您的建议。建议是:
build as normal and then postprocess using install_name_tool
如果您不喜欢这个建议,可以调整从该线程开始的 hacky 补丁以适合您,并将该补丁作为 [= 的一部分应用到生成的 libtool
14=]配置。
我正在尝试在 MacOS 上使用 Autotools 构建一个框架。这个框架包含一个库,我们称之为 libmytools.dylib,以及一个使用该库的可执行文件。 我想要的是在运行时动态地 link 这个库。
可执行文件通常安装到 /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 拒绝 link 我的可执行文件使用动态 -rpath
并显示以下错误:libtool: link: only absolute run-paths are allowed.
我也试过mytools_LDFLAGS = -dynamic -rpath @executable_path/../Libraries
但是结果是一样的...
我做错了什么??
这是当前的 libtool 设计。来自 libtool 补丁列表的 This thread 可能有适合您的建议。建议是:
build as normal and then postprocess using install_name_tool
如果您不喜欢这个建议,可以调整从该线程开始的 hacky 补丁以适合您,并将该补丁作为 [= 的一部分应用到生成的 libtool
14=]配置。