问题标签 [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 回答
1187 浏览

macos - 无法在 osx 上更改 @rpath

我有一个具有以下依赖项的外部库“libspecial.dylib”。

因为@rpath 会导致问题,所以我有一个脚本将所有@rpath 替换为真实路径。

但这只会替换第二个依赖项(实际上还有更多依赖项,所有依赖项都被替换了,但不是第一个指向 lib 本身的依赖项):

我不知道为什么我不能改变第一个依赖。有任何想法吗?

在 OSX 10.11.1 上运行

0 投票
0 回答
42 浏览

macos - 如果动态库的 install_name 中没有附加目录,那么 dyld 搜索哪个路径?

Mac,对于一个编译好的项目(使用QT 5.5.0),我直接运行可执行文件,报错:

libraw.10.dylib 未加载;

好的,我知道原因了。

一种解决方案是使用 install_name_tool 更改 libraw.10.dylib 的安装名称并将其放在某处,如文章中: “Qt for OS X - Deployment”

但现在我不想这样做。一个原因是我不需要真正部署它。所以我想通过仅将库“libraw.10.dylib”复制到正确的位置来使其更简单。第二个原因是我很好奇没有附加目录的安装名称的默认路径是什么。

但是无论我把文件“libraw.10.dylib”放在哪里,都会出现同样的错误。

我试图查看dyld 手册页中的详细信息,但无法弄清楚。

可能所有路径变量都是空的(我尝试了几个流行的变量,例如 DYLD_FALLBACK_FRAMEWORK_PATH、DYLD_FALLBACK_LIBRARY_PATH 等;它们都是空的)。

然后我将库“libraw.10.dylib”放在根目录下,与文件夹“Applications”平行。还是同样的错误。

那么 dyld 遇到的时候在找什么:libraw.10.dylib

0 投票
1 回答
1005 浏览

c++ - 通过 otool 查看时 install-name-tool 不添加库路径?

我使用 Xcode 和 Qt 完成了我的 mac 应用程序。现在我想准备将其部署到其他 Mac。为了做到这一点,我使用了 macdeployqt。

我刚刚使用 macdeployqt 创建了一个应用程序包。然而,一些图书馆不见了。我试图遵循 [this][1] 的答案。原来我需要将丢失的 dylib 从我的计算机复制到 .app,然后运行安装名称工具。我还没有使用 install-name 工具,因为我对使用-id-change使用它感到困惑,尤其是在我目前的情况下。我什至需要使用它吗?这是我到目前为止所做的。

第 1 步:运行 macdeployqt - 这是 Qt 附带的程序,将 qt 的必要要求嵌入到应用程序中。

第 2 步:然后我决定在实际生成的应用程序二进制文件上运行 otool

第 3 步:但是我注意到我的 project2.app/Contents/Frameworks 里面没有这些库。所以我决定手动复制它们。

你能告诉我复制这些文件后我的下一步应该是什么吗?

这是我尝试在另一台计算机上运行应用程序而不使用 install_name_tool 时得到的输出

更新:

经过一番挣扎后,我决定执行以下操作

当我对我刚刚添加的一个库执行此操作时,这似乎并没有解决问题。

我仍然没有获得图书馆的路径,libOpenThreads.20.dylib , libosgUtil.141.dylib and libosg.141.dylib 任何建议都会受到欢迎。

0 投票
3 回答
7280 浏览

xcode - install_name_tool -change 和 -id 之间的区别

我一直在为这个概念苦苦挣扎,我无法真正理解和之间的区别-change-id手册页指出

到目前为止,我已经尝试过-change. 假设我有以下结构

现在假设我在 itemB 上运行了以下内容

上面的结果表明,test_library.dylib取决于another_library.dylib现在是否需要更改another_library.dylib我会这样做的位置

这将改变项目 D 的位置。我的问题是做install-name_tool -id什么以及何时使用它?

0 投票
1 回答
94 浏览

macos - 如何在不通过 brew 安装的情况下使用`psql`

我想psql独立使用该实用程序,而不通过 brew 或其他方式安装 postgress(我有我的理由)。我在 OS X 上使用 psql 版本 9.5.3,它与 PostgressApp 一起分发。

当我只分发 psql 时,我收到错误:

使用命令otool -L psql我发现库的路径仍然指向 Posgres.app,所以我用install_name_tool工具更改了它,我还检查了所有引用的库并修复了它们。

但是,我仍然收到相同的错误消息。任何人都知道如何解决这个问题?

还是通往工作独立psql二进制文件的另一条途径?

0 投票
0 回答
720 浏览

macos - 如何命令行从 Qt 应用程序中为 OSX 构建 .app 二进制文件?

我正在准备一个 shell 脚本来将我的 QtApp 构建为 OSX 的 .app。我在我的脚本中执行以下操作

我得到了 MyApp.app。到这里为止都很棒!但是当我双击打开它时,我收到以下错误:

You can’t open the application “MyApp.app” because it is not supported on this type of Mac.

我试图围绕这个问题进行搜索。看起来我需要在我的脚本中添加更多与otool&相关的代码行,install_name_tool如 Qt 的以下官方链接中所述:http: //doc.qt.io/qt-5/osx-deployment.html#macdeploy

它公平地解释了哪些工具和在 Qt 下工作以获得最终的 .app,但我无法弄清楚到底要在我的脚本中放入什么,以便我得到一个与 Qt 库静态链接的 MyApp.app,该库在我的构建后的osx机器。

问题:
有人可以指出在 macdeployqt 命令之后要在我的脚本中添加什么来获得适用于 OSX 的正确 MyApp.app 吗?

顺便说一句,otool在 MyApp 上运行命令会给出以下输出:

0 投票
0 回答
362 浏览

c++ - 在 mac OS X 环境中使用 3rd 方库

我正在升级旧版 mac OS X 构建环境(C++ 代码)并试图找到处理第三方库的“正确方法”(它们都是开源库)。我们目前支持多个 mac OS x 版本,它们使用(动态链接)每个 OS 版本的默认第三方库(位于 /usr/lib)它会导致兼容性错误,因此我寻找一种更好的方法来做到这一点。

在 windows 环境下,我们使用类似于 Visual Studio 版本的可再发行包来防止此类错误,我在这里没有找到类似的东西。

我想到的解决方案是手动编译它们或手动从 MacOSX-SDK 中获取它们并使用 install_name_tool 来强制我们的 dylib 和应用程序使用这些库。

在以下链接中,我找到了类似的解决方案: 在 Xcode 中,如何链接动态库 (libcurl) 以便该应用程序也适用于旧版本的 Mac OS?

但所有这些都“闻起来”是个坏主意。

0 投票
1 回答
466 浏览

python - OSX 上 PySide 的库未加载错误

我将下载的 PySide 副本从其原始安装位置 (/Library/PySide/2.7/site-packages/PySide) 移到网络上的某个位置,以便脚本可以访问它。但是,我开始收到“库未加载”错误。我在桌面上复制了一份用于测试:

我以前遇到过这个问题,我确信我用一个刚刚运行 install_name_tool 的 bash 脚本修复了它:

但是,由于某种原因,脚本似乎无法解决问题,QtCore.so 仍在原始位置寻找库。我检查了文件的权限并仔细检查了脚本中的路径。关于我缺少什么的任何想法?

谢谢。

编辑

越来越近。

当我将上述内容作为 bash 脚本运行然后尝试导入时,我收到一个新错误:

我认为我的第一个 bash 脚本的问题是旧路径不存在并且被忽略了。现在,我需要再试一次,但使用绝对路径。

0 投票
1 回答
695 浏览

python - 如何在 macOS 上运行 Nuitka

我正在尝试在一个非常基本的 Python 脚本上运行Nuitka,只是为了测试它。不幸的是,我收到一个我无法正确理解的错误。

这里有什么问题?如何解决?

一些额外的信息:

我试过install_name_tool -id "@loader_path/Users/xxx/miniconda3/lib/libpython3.6m.dylib" libpython3.6m.dylib了,但没有用。

0 投票
1 回答
317 浏览

bash - Mac OS X:如何在脚本中获取 otool 的结果?

我想在脚本中更改 dylib 搜索路径。在终端中,我使用 otool -L my.dylib,然后查看搜索路径是什么,并使用 install_name_tool 进行更改。install_name_tool (-change) 使用以前的路径和新路径作为参数。如何将 otool -L 的结果获取到脚本变量?