如何修复 install_name_tool:无法在 xcode 10.2 中打开文件

Posted

技术标签:

【中文标题】如何修复 install_name_tool:无法在 xcode 10.2 中打开文件【英文标题】:How to fix install_name_tool: can't open file in xcode 10.2 【发布时间】:2019-08-29 09:33:49 【问题描述】:

这是我的第一篇文章,所以希望我正确地遵守了规则......

install_name_tool:无法打开文件:/Users/App/Desktop/myApp/DerivedData/MyApp/Build/Products/Debug/Test.app/Contents/Frameworks/mylib.dylib(没有这样的文件或目录)

这从版本 10.2 (10E125) 开始。在此版本之前, install_name 工具工作得很好。据我所见,构建阶段下的复制脚本在 Xcode 实际将 dylib 复制到 @executable_path/../Frameworks/mylib.dylib" "$APP_FILENAME" 之前执行。

我将 dylib 添加到 Xcode 如下(让 Xcode 处理所有复制): 1. Linked Frameworks and Libraries 然后添加 2. 嵌入式二进制文件 3. 添加实际代码以重新链接到构建阶段 => 运行脚本:

install_name_tool -change "$LIB_PATH/libtest.dylib" "@executable_path/../Frameworks/libtest.dylib" "$APP_FILENAME" install_name_tool -id @executable_path/../Frameworks/libtest.dylib "$FRAMEWORK_PATH/mylib.dylib"```

我有几个建议: 1. 在 Copy Script 中使用了 sleep 语句,但它只是暂停了 Xcode 的运行,仍然是同样的问题。 2. 使用外部脚本,同样的问题。 3.添加到帖子中,同样的问题。

我认为它很简单,但我不能指望它。

install_name_tool -change "$LIB_PATH/libtest.dylib" "@executable_path/../Frameworks/libtest.dylib" "$APP_FILENAME" install_name_tool -id @executable_path/../Frameworks/libtest.dylib "$FRAMEWORK_PATH/mylib.dylib"

我正在尝试重命名 dylib,以便它们从 /usr/local/opt/ 的原始位置指向 @executable_path/../Frameworks/

【问题讨论】:

您只收到一条错误消息吗?该文件不存在的任何原因? dylib 复制就好了,问题是,Xcode 在 dylib 复制过程完成之前触发 scheme->edit Scheme->post 或 New Run Script Phase 中的脚本。我可以在日志中看到脚本触发的位置,然后 Xcode 将 dylib 复制过来。我尝试了外部脚本,脚本中的睡眠语句(Xcode 只是等待然后照常进行),也将 Xcode 更改为 legacy,但没有成功。我让 Xcode 处理整个过程。我想我必须在新脚本阶段自己处理复制 dylib,然后运行 ​​install_tool。 【参考方案1】:

我已经解决了这个错误。 就我而言,我已经从 XCode 的 Build Phase 中删除了 Run Script

【讨论】:

以上是关于如何修复 install_name_tool:无法在 xcode 10.2 中打开文件的主要内容,如果未能解决你的问题,请参考以下文章

OSX Dylibs 的 Qt .pro 文件设置而不是 install_name_tool?

install_name_tool 更新可执行文件以在 Mac OS X 中搜索 dylib

install_name_tool 格式错误的对象(加载命令 23 cmdsize 为零) - Mac OS X Yosemite

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?

如何修复“ImportError:无法导入名称'StringIO'”