macos - 自动工具-libtool : link: -rpath with @executable_path on MacOS

标签 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

如果框架安装在该位置,一切正常,但是当框架未安装在计算机上而是仅嵌入到另一个项目中时,则无法找到该库。

我需要的是所谓的“运行路径依赖库”,如下所述: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html

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

但不幸的是 libtool 拒绝将我的可执行文件与动态 -rpath 链接 并显示以下错误:libtool:链接:仅允许绝对运行路径。

我也尝试了mytools_LDFLAGS = -dynamic -rpath @executable_path/../Libraries但结果是相同的......

我做错了什么?

最佳答案

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

build as normal and then postprocess using install_name_tool

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

关于macos - 自动工具-libtool : link: -rpath with @executable_path on MacOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817690/

相关文章:

c++ - 使用 autotools 为共享库正确安装 config.h

module - 在不安装 .la 和 .a 变体的情况下使用 autotools/libtool 构建 .so 模块

每个子项目 LIBS 可以使用自动工具吗?

macos - LTLIBRARIES : mv *. Tpo *.Plo,但前者不存在,后者已经存在

macos - 无法在MacOS-Sierra上启动XAMPP Apache服务器

JavaFX - javafx.print.PrinterJob.createPrinterJob() 在 mac 上始终为 null

macos - Mac应用商店: URL to open the list of the apps of one developer in Mac Appstore from an OSX app?

autotools - 如何获取autoconf configure.ac中顶级构建目录的绝对路径?

c++ - 如何告诉 Libtool 使用 C++ 而不是 C?

php - 无法在 Mac 上连接到 MySQL——缺少 mysql.sock 文件