问题标签 [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 投票
2 回答
8226 浏览

xcode - install_name_tool 报告格式错误的对象

每次我尝试在我的机器上使用 install_name_tool 时,它都会报告以下内容

我读到在构建二进制文件时可能是一个错误。为了检查,我创建了最简单的 hello world c++ 程序并尝试使用 install_name_tool 进行更改。没用。我究竟做错了什么?

目前我有运行 Snow Leopard OS 的 XCode 4.2。

0 投票
3 回答
300 浏览

qt - shell 脚本中的错误

我正在使用 shell 脚本来帮助我解析库路径,以便我可以发送我的应用程序包。我对 shell 脚本了解不多,并且正在从其他部分中破解一些东西,所以我真的不知道如何解决这个问题。问题围绕着诸如done << ...

这是一些代码!请注意,这是基于 Qt 项目。

此打印的错误是指该行done << (echo "$hasUsrLocal")

done << (find MyProgram.app -type f -print0)如果我注释掉一些脚本,我也会遇到类似的问题。谢谢!

0 投票
1 回答
636 浏览

dylib - 将库(dylib)链接到已编译的 ipa

我有一个已编译的 ipa 和一个 .dylib 文件。使用 install_name_tool 我可以更改 ipa 文件二进制文件中存在的库。是否有任何用于向 ipa 添加库的命令。更具体地说,我想在 ipa 的 Mach-O 二进制文件中添加一个 LC_LOAD_DYLIB 命令。

0 投票
1 回答
198 浏览

ipa - 编辑和编译 install_name_tool

我想将 LC_LOADDYLIB 命令添加到 ipa 文件中存在的我的 mach o 二进制文件中。install_name_tool 用于更改链接到另一个库的任何现有库。我想向 ipa 添加一个新库。所以我想如果我编辑 install_name_tool.c 文件,我将能够添加这个功能。我从 Apple 开源下载了 cctools 项目。问题是我无法编译 c 文件。我收到错误。谁能建议任何将库链接到 IPA 或编译 install_name_tool 文件的解决方案。

0 投票
2 回答
5206 浏览

xcode - install_name_tool on OS X Lion

I'm running OS 10.7.4 and cannot find install_name_tool. I have Xcode 4.3.3 installed through the App Store. Does anyone know where I can find/get install_name_tool?

0 投票
0 回答
283 浏览

xcode - install_name_tool 更改未在分发中传播

我正在使用 py2app 将 python GUI 包装到应用程序中。在移植到另一台机器时,我注意到我遇到了 libpng12.0.dylib 的依赖问题。这是由系统提供的存储,带有 X11,因此传统上不由 py2app 捆绑。

另一个 dylib(捆绑)需要更新版本的 libpng。使用下面的命令,我尝试链接到我将包含在 OS X 中的 libpng 的副本。这在本地工作得很好,但是当我尝试复制应用程序时,它会恢复到旧路径。下面的命令应该更好地解释这一点。

将我的 libpng 复制到我的应用程序的框架目录。

查看libgdal.1.dylib的依赖路径(需要较新的libpng)

所以 libpng 链接到系统安装。我们需要将其更改为链接到本地​​(应用程序)安装。

然后我们需要验证它是否有效。

所以它奏效了。libpng 现在链接到包含的副本,而不是系统副本。

然后我将应用程序复制到另一台机器上进行测试,libpng 恢复为静态链接到 libpng 的系统安装!

为什么?

我也尝试使用 install_tool_name -id,但结果是一样的。当我将应用程序复制到另一台机器时,我的 dylib 的链接不断变化。

0 投票
1 回答
7857 浏览

xcode4 - 使用 install_name_tool 更改 dylib 的路径

上面有人告诉我,在 xcode 中放入运行脚本时会改变动态库的查找路径。然后可以通过在终端窗口中输入以下内容来验证这一点

输出将类似于以下内容

我的问题是为什么 install_name_tool 命令不起作用?现在不是,但当 testlib 项目是客户端项目的目标依赖项时,它确实如此。现在我刚刚将 .dylib 拖到客户端项目中。查找路径保留在 usr/local/lib 中。

还有,什么是usr/local/lib,为什么系统认为我的dylib在里面,它是怎么进去的?

0 投票
0 回答
3003 浏览

boost - dyld:库未加载:libboost_system.dylib

另一个dyld: Library not loadeddylib问题..

我有一个从 Boost 源编译的 dylib ( libboost_system.dylib
), 然后用于install-name-tool准备将其包含在我的应用程序包的 Frameworks 文件夹中,如下所示:

验证otool

现在添加到 Xcode 项目,链接到应用程序并复制到 Frameworks 文件夹。
但是在检查构建的应用程序时,otool -L它仍然指的是原始(即“非重定位”)dylib:

并且应用程序无法以“ dyld: Library not loaded: libboost_system.dylib ”错误启动。有任何想法吗?


注1

现在,如果我还使用 对我的应用程序的二进制文件进行后处理,它确实可以工作,即:install_name_tool

install_name_tool -change libboost_system.dylib @executable_path/../Frameworks/libboost_system.dylib TestApp

我是否缺少一些 Xcode 选项来强制编译器在构建过程中自动更改我的应用程序中的 dylib 位置?

install_name_tool当然,手动调用使用dylib 的应用程序(即可能的许多应用程序之一)可能只是我在配置(应用程序)项目时搞砸的事情的一种解决方法......

0 投票
1 回答
469 浏览

xcode - 忽略 install_name_tool 将框架设为私有

我使用GPhoto2 框架编写了一个简单的应用程序,只要框架位于最初编译的位置,它就可以工作。不过,我想把它移到应用程序包中,所以它不需要单独安装,所以我需要让它相对于这个主可执行文件工作。

不幸的是,该框架不是 Xcode 项目。它使用脚本构建,所以我不能简单地更改安装目录构建设置,这是我在寻找答案时经常看到的解决方案。作为 Xcode 和 Mac 编程的新手,我也无法知道如何将框架转换为 Xcode 项目。

我遇到的另一个建议是使用 install_name_tool 更新库 ID 和依赖项,将绝对路径替换为“@executable_path/../Frameworks/GPhoto2.framework”形式的路径。该框架不是一个单一的二进制文件,而是包含许多 .dylib 和 .so 库,但所有这些库的更新只成功了一半。

我已将 Xcode 设置为在构建框架时将框架复制到应用程序包中。然后,如果我从最初编译的位置删除框架,则应用程序无法加载,OS X 生成的报告说 libgphoto2 库无法再找到,正如预期的那样。

如果我随后使用 install_name_tool 更新应用程序包内的所有框架库以及应用程序二进制文件本身中的引用,则应用程序将加载但找不到任何连接的相机。使用 otool 我能够验证所有引用都已正确更改。

但是,如果我将框架的副本替换到其原始位置,它就会再次正常工作,识别连接的摄像机,无论该框架使用相对位置还是绝对位置。显然,尽管加载,它仍在查看此位置。我什至尝试依次从框架中的原始位置删除每个单独的库文件,以查看问题是否只是其中依赖的结果,但无论缺少哪个,应用程序都将无法工作。

顺便说一句,如果我使用框架的更新版本构建应用程序,它会失败说找不到库“@executable_path/../Frameworks/GPhoto2.framework/prefix/lib/libgphoto2.2.dylib”

我是在做错什么或错过了一步,还是我试图对在 Xcode 之外创建的框架做不可能的事情?

0 投票
1 回答
1804 浏览

objective-c - 有什么办法可以改变Xcode中的动态库搜索路径

下面是我的场景,

  1. 在我的应用程序中,我必须使用 libopus 库,我下载并安装,编译 --> 安装过程是正常的,因为它适用于任何其他开源库,

  2. 我将 libopus.a 与我的应用程序链接在一起,我的做法是,默认情况下它将安装在 /usr/local/lib 中,所以我从那里拖动并将其添加到我的应用程序中,

在我的机器上工作正常,没有错误,

在另一台机器上,我希望它能够顺利运行,因为我静态地包含了这个库,但它的抛出错误为

所以我得出结论,libopus.a 以某种方式包括 libopus.0.dylib 也是动态的,

现在我不能在我的构建设置中添加一个复制阶段,所以它会被复制到 ../Framework 文件夹中

如果我执行 otool -L libpus.a 那么它会显示以下结果

它没有显示为它依赖于 dylib 库 现在我的问题是
如何告诉应用程序首先查看此路径

我尝试了以下选项,

  1. install_name_tool 但它似乎可以在其他机器上运行,所以用户需要运行这个脚本而不是开发人员,

  2. 尝试在 xcode 中设置一些选项以设置 RUNTIME 搜索路径以定位该特定 dylib 但到目前为止尚未成功