问题标签 [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.
python - Python tk 框架
我有生成以下错误的python代码:
我的一些 Tk 扩展库在编译时链接到 /System/Library/Frameworks 而不是 /Library/Frameworks,我知道 install_name_tool 工具可以将二进制文件重新链接到正确的框架,但我到底需要什么输入终端以解决此问题?
macos - dyld:库未加载...原因:找不到图像
尝试运行我在 Mac OS X 中发送的可执行文件时,出现以下错误
我已经安装了 boost 库,它们位于/opt/local/lib
. 我认为这个问题与可执行文件有关,它只在它所在的目录中查找,就像我在其中粘贴“libboost_atomic.dylib”时一样,它不再介意它了。不幸的是,它抱怨找不到下一个 boost 库。
有没有简单的方法来解决这个问题?
macos - 在 Mac OSX 上重定位后修补 Qt 二进制文件的脚本
我正在从源代码构建 qt 5。我想知道在 MacOS 下复制粘贴 qt 二进制文件的最简单方法是什么。如果您在任何 qt 框架上运行 otool,您将看到所有依赖项都使用绝对路径:
当我复制 qt 二进制文件并将我的应用程序与该副本链接时,它可以工作,但一些依赖框架是从旧位置获取的。当我尝试将二进制文件移动到另一台机器时,情况变得更糟。我知道可以使用 install_name_tool 解决问题,但这是很多容易出错的手动工作。我想知道是否有一个脚本可以帮助我?
macos - install_name_tool -change 静默失败并忽略 -headerpad_max_install_names 标志
我有一个命令行可执行文件,其中包含指向 dylib 的链接——分发时——不会位于otool -L
.
例如,给定一个名为 的二进制文件foo
:
在我的安装程序中,我有一个安装后脚本试图用来install_name_tool -change
解决这个问题,以便foo
链接到新位置的 dylib。
例如:
但是这种变化被忽略了,默默地失败了。当我otool -L
再次运行时:
没有改变。
我正在编译胖二进制文件并尝试将-headerpad_max_install_names
编译标志添加到 32 位 Makefile。这并没有解决问题,因为它install_name_tool -change
仍然默默地失败。
我读到它-headerpad_max_install_names
在 64 位平台上没有任何作用,但我还是将它添加到 64 位 Makefile 中。可以预见的是,这也没有解决问题。
如何修复我的编译过程,以便最终可以更改链接 dylib 的路径install_name_tool
?
macos - Mac OS X Archive (.app) 在测试 Mac 机器上崩溃:EXC_BAD_INSTRUCTION
我正在开发一个 Mac 应用程序,该应用程序在我的开发机器上运行良好。该项目有很多 dylib 文件,我必须使用解决的依赖项
install_name_tool -change
我在上面的命令中使用了@executable_path。完成此操作后,该程序在我的机器上运行良好,当我将 .app 文件移动到测试环境时它失败了..
崩溃的线程:0 调度队列:com.apple.main-thread
异常类型:EXC_BAD_INSTRUCTION (SIGILL) 异常代码:0x0000000000000001、0x0000000000000000
线程 0 崩溃::调度队列:com.apple.main-thread
0 libfreetype.6.dylib 0x001f736b FT_CMap_New + 105
1 libfreetype.6.dylib 0x0022d1a4 tt_face_build_cmaps + 516
2 libfreetype.6.dylib 0x00229f0a sfnt_load_face + 1424
dylib 0x00200cbe tt_face_init + 231
4 libfreetype.6.dylib 0x001f5fb4 open_face + 218
5 libfreetype.6.dylib 0x001f5bf1 FT_Open_Face + 528
6 libfreetype.6.dylib 0x001f59db FT_New_Face + 68
查看粗体字符可以看出问题出在 freetype dylib 中。但为什么会出现问题?我已将 .dylib 文件包含在my_app.app/Contents/Frameworks/
目录中。
这是造成问题的原因吗?
objective-c - Mac OS X - 将可执行文件链接到不同的动态库,同时加载旧的和新的
我有一个用 Xcode 构建的命令行工具,它链接到一些 Apple 框架。
作为“个人实验”(只是想了解一点动态库的工作原理),我试图将可执行文件指向相同框架的不同版本。
例如,假设可执行EXEC使用LIB_A,后者使用LIB_B。
我制作了LIB_A和LIB_B的副本,将它们放在不同的(较短的)目录路径下。
我曾经otool -L
获取依赖项和库的 ID。
然后我使用install_name_tool
with 指令-id
更改新LIB_A和LIB_B的 ID (基本上只是更改前导路径,因为名称没有更改)。
然后使用指令-change
让新的LIB_A指向新的LIB_B并让可执行的EXEC指向新的LIB_A。
这样,我认为应该正确地重新创建整个依赖关系树。
install_name_tool
没有返回错误并检查可执行文件和新库,otool
它们都指向正确的路径。
不幸的是,运行可执行EXEC时,控制台会抛出许多关于类重复定义的错误。就像旧库和新库都被加载一样。
最后一切都因Trace/BPT 陷阱而崩溃:5
例如:
如果我调用
我在执行时看到实际上库被加载了两次。
xcode - 使用自定义框架编译时出错
我尝试使用外部框架编译我的应用程序。当我执行它时,我收到以下消息:
该框架是在构建阶段添加的,我什至尝试执行
知道我还缺少什么吗?谢谢。
xcode - Xcode 5.1.1 的 install_name_tool 在哪里
在我的 Mac 中安装 Xcode 5 时,我已经安装了命令行工具。
install_name_tool
当时工作正常。
现在,当我尝试使用时,install_name_tool
我得到以下错误, malformed object (unknown load command 4)
通过谷歌搜索我发现这个错误是由于命令行工具没有与 OS 或 Xcode 一起更新。所以我去了这里(https://developer.apple.com/downloads/index.action)下载了 10.9 的命令行工具,并在终端上再次尝试,但错误仍然存在。
然后我尝试从 5-->5.1.1 更新我的 Xcode,进入Downloads
首选项,没有下载命令行工具的选项。我安装了我之前为命令行工具下载的 pkg,但我仍然遇到同样的错误。
install_name_tools 在这个导演中不存在,作为其他类似问题的答案之一建议--->/Applications/Xcode.app/Contents/Developer/usr/bin/
我的问题是,install_name_tool
从 pkg 安装后安装在哪里?
macos - 如何在 dylib 中创建绝对路径引用?
[免责声明:我正在使用其他人的代码。我从来没有创建过 .dylib,所以我转向 SO]
我正在开发一个创建 .dylib 的发行版。它看起来不错,但是当我链接它时,生成的可执行文件会崩溃:
当我使用 otool 检查可执行文件时,问题很明显:(libstk
最后一个条目的下一个)具有相对路径,而不是绝对路径。(顺便说一句,它没有正确设置兼容性或当前版本。)
问题
该发行版使用 g++(而不是 clang)作为其编译器。创建 .dylib 的当前咒语是:
它应该读什么来创建一个具有绝对路径的 .dylib?
更新
出于向后兼容性的原因,我们希望在构建时为 dylib 保留一个相对名称(即,我们不想将 -install_name 参数传递给g++ -fPIC ...
命令)。
在构建具有绝对路径名之后,有没有办法调整 dylib?当我在现有文件上运行 otool -L 时,我看到:
我希望第一行是
ps
如果有人像我一样不耐烦,您可以使用install_name_tool
一种解决方法来更新可执行文件,如下所示:
...但是每次构建可执行文件时不必这样做肯定会很好。
xcode - 让 XCode 设置 @executable_path 来自动查找 dylib
我使用 XCode 5.1.1 构建我的 OSX 应用程序并链接到 .dylib。我已经设置了 Build Phases -> Copy Files 以将 .dylib 复制到 Frameworks 目标中。
当我从 XCode 启动时它工作正常,但是当我从 Finder 双击启动 .app 包时,它抱怨它找不到 XCode 尽职尽责地放置在 Contents/Frameworks 下的 dylib,这可以在 finder 中轻松验证。
我的可执行文件上的 otool -L 显示它正在寻找
我可以通过在我的可执行文件上使用 install_name_tool 轻松解决这个问题,如下所示:
但显然,每次重新构建时都会丢失这种变化。我如何告诉 XCode 首先设置 @executable_path../Frameworks?