问题标签 [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.

0 投票
1 回答
410 浏览

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 / 音频插件主机中。

那么,当父进程负责加载我们的可执行文件时,运行时依赖解析可能会有所不同?

0 投票
0 回答
124 浏览

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。

有谁能帮助我吗?谢谢。

0 投票
0 回答
49 浏览

macos - 如何在 MacOS 中轻松重新分发 dylib?

我想分发我的应用程序。但是,它充满了来自不同位置的 dylib。我只想将它们复制到 Resources/lib 目录并使用启动 shell 脚本将我的 LD_LIBRARY_PATH 设置为指向它,就像我在使用 chrpath 清除 rpath 后在 Linux 中所做的那样。目前,我正在为 otool / install_name_tool 苦苦挣扎,我似乎无法更改 dylib 的“名称”属性。

0 投票
1 回答
74 浏览

macos - 通过 install_name_tool 更改库搜索路径

otool -L二进制文件的依赖项:

一些依赖项位于/usr/local/opt/. 我想更改它们以便@rpath/搜索它们。

我将不得不像这样一个接一个地更改它们:

有没有方便的方法将所有更改/user/local/opt/...@rpath

0 投票
1 回答
216 浏览

macos - install_name_tool:无法打开输入文件:*.dylib 进行写入(权限被拒绝)

我可以清楚地看到该libopenvdb.dylib文件存在并且我是所有者。但install_name_tool抛出此错误:

install_name_tool:无法打开输入文件:libopenvdb.dylib 进行写入(权限被拒绝)

终端命令:

可能是什么原因?我想不通。

截屏

0 投票
0 回答
101 浏览

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启动就好了。

不过,目标是修改Makefileformybinary使其链接到libicuuc.dylib. 我怎样才能做到这一点?

mybinary在 tar 文件中部署给最终用户,与 tar 文件(在本例中为 68)相比,他们更有可能拥有更新版本的 icu4c(在本例中为 69 mybinary)。

  1. 有没有办法在编译时告诉链接器我想使用libicuuc.dylib(文件名中没有版本号)?如果此行为随后应用于其他链接库会很好,即我不需要将它专门用于libicuuc.dylib.

  2. 如果那不可能,我可以Makefile修改. 它不是编译控制台输出的一部分,解析输出会很混乱。有没有简单而优雅的方式来传递给?install_name_toollibicuuc.68.dylibotool -L mybinarylibicuuc.68.dylibinstall_name_tool

0 投票
1 回答
550 浏览

xcode - 使用 install_name_tool -id 更改 dylib 库路径,没有任何变化

我正在尝试将可执行文件放在一起发送到另一台计算机。otool -L "exec_name" 返回:

试图将其更改为我的可执行目录:

它发出警告:

但没有任何变化, otool -L 仍然显示:

我也试过

这给出了一个错误:

无法理解为什么它不会改变路径......