问题标签 [install-name-tool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - 我的目标与 brew 中的库动态链接。如何捆绑分发?
我建立了一个音频插件。我的目标是.app
和.component
。
我动态链接到一个 brew 安装的库,libfluidsynth
.
我复制libfluidsynth
到.app
/ .component
。
我曾经install_name_tool
重新链接二进制文件以指向捆绑的libfluidsynth
.
libfluidsynth
取决于glib
, gthread
, intl
.
我将这些库复制到包中,重新链接libfluidsynth
以更喜欢捆绑的副本。
我也对这些库及其依赖项做了同样的事情。
快速浏览一下它的外观:
这对.app
. 在这里,查看打开的文件(opensnoop | grep 'dylib'
):
唯一在其.app
捆绑的 Frameworks 文件夹中查找 dylib。完美的。
.component
然后我在我的目标上做了同样的复制和重新链接。这没有用。
我加载.component
到音频插件主机中,并检查文件是否打开:
它正在寻找/usr/local
. 为什么?作为健全性检查,我使用了otool
确认我确实已正确链接:
我以为我正确地链接了它。我使用了完全相同的脚本(它是自动化的和参数化的)。我究竟做错了什么?音频插件主机是如何知道在 下查找依赖项的/usr/local
?为什么我的图书馆链接被忽略了?
我已将二进制文件发布到: https ://github.com/Birch-san/juicysfplugin/releases/tag/1.0.1
我的重新链接脚本在这里: https ://github.com/Birch-san/juicysfplugin/blob/master/Builds/MacOSX/relink-build-for-distribution.sh
.app
如何和之间的主要区别.component
目标的使用方式
.app
是独立的.component
是一个音频单元插件,您可以将其加载到 DAW / 音频插件主机中。
那么,当父进程负责加载我们的可执行文件时,运行时依赖解析可能会有所不同?
ios - 编译 Opencv V3.1 失败,找不到 install_name_tool
我尝试为 iOS 构建 opencv V3.1,但失败了:下面是截图:
“找不到 install_name_tool 请检查您的安装”
我下载源代码并按以下步骤构建: https ://docs.opencv.org/3.1.0/d5/da3/tutorial_ios_install.html
我不知道为什么它不能安装成功,我按照步骤成功构建了 V3.4。
有谁能帮助我吗?谢谢。
macos - 如何在 MacOS 中轻松重新分发 dylib?
我想分发我的应用程序。但是,它充满了来自不同位置的 dylib。我只想将它们复制到 Resources/lib 目录并使用启动 shell 脚本将我的 LD_LIBRARY_PATH 设置为指向它,就像我在使用 chrpath 清除 rpath 后在 Linux 中所做的那样。目前,我正在为 otool / install_name_tool 苦苦挣扎,我似乎无法更改 dylib 的“名称”属性。
macos - 通过 install_name_tool 更改库搜索路径
otool -L
二进制文件的依赖项:
一些依赖项位于/usr/local/opt/
. 我想更改它们以便@rpath/
搜索它们。
我将不得不像这样一个接一个地更改它们:
有没有方便的方法将所有更改/user/local/opt/...
为@rpath
?
g++ - dyld:库未加载:/usr/local/opt/icu4c/lib/libicuuc.68.dylib 原因:找不到图像
我有一个编译的程序mybinary
,当我尝试运行它时,它会立即失败并显示“找不到图像”。问题不是丢失的动态库的路径,而是它需要查看不包含版本号的库名称。
在执行时mybinary
,我得到了这个(为简洁而编辑):
运行otool -L mybinary
显示了这一点(为简洁起见也进行了编辑):
我希望它在libicuuc.dylib
没有“.68”的情况下查看。一个ls -1
表明它存在:
因为引用的版本mybinary
是 68(低于 69,从而防止Incompatible library version
),我可以mybinary
通过执行以下来修复:
现在,mybinary
启动就好了。
不过,目标是修改Makefile
formybinary
使其链接到libicuuc.dylib
. 我怎样才能做到这一点?
mybinary
在 tar 文件中部署给最终用户,与 tar 文件(在本例中为 68)相比,他们更有可能拥有更新版本的 icu4c(在本例中为 69 mybinary
)。
有没有办法在编译时告诉链接器我想使用
libicuuc.dylib
(文件名中没有版本号)?如果此行为随后应用于其他链接库会很好,即我不需要将它专门用于libicuuc.dylib
.如果那不可能,我可以
Makefile
修改. 它不是编译控制台输出的一部分,解析输出会很混乱。有没有简单而优雅的方式来传递给?install_name_tool
libicuuc.68.dylib
otool -L mybinary
libicuuc.68.dylib
install_name_tool
xcode - 使用 install_name_tool -id 更改 dylib 库路径,没有任何变化
我正在尝试将可执行文件放在一起发送到另一台计算机。otool -L "exec_name" 返回:
试图将其更改为我的可执行目录:
它发出警告:
但没有任何变化, otool -L 仍然显示:
我也试过
这给出了一个错误:
无法理解为什么它不会改变路径......