问题标签 [lipo]

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 回答
1010 浏览

ios - Build Active Architecture Only -> No 和使用 lipo 创建胖二进制文件有什么区别?

假设我们在 Xcode 中创建了一个静态库,并且在 Build Settings 中设置Build Active Architecture Only为 No。为什么它仍然会生成一个仅适用于当前选择的设备(模拟器或真实设备)的库?我们还需要什么来创建一个运行脚本的胖二进制文件,该脚本将使用lipo工具?为什么这两者之间的实际区别是?lipo所有架构的建筑物都没有做什么?

0 投票
0 回答
192 浏览

ios - 在模拟器和设备上与 cocoapods 链接错误:Dsymutil

我有一个项目,最近莫名其妙地无法在模拟器和设备上运行。一切正常编译,但发生了两个链接器错误。

第一个是 lipo 错误: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: ~/Library/Developer/Xcode/DerivedData/Thirstie-fyibdehnqftrktbobkflxrtzenqr/Build/Intermediates/Thirstie.build/Debug-iphonesimulator/Thirstie.build/Objects-normal/i386/Thirstie (No such file or directory)

第二个是 dsymutil 错误(无法解析调试图):

我正在运行 Xcode 8.3.3 和 iOS 10。

我尝试过的一些补救措施:

  1. pod deintegrate && pod update && pod install
  2. 删除派生数据并清理 xcode 项目
  3. 确保Build Only Active Architecture在我的 pod 目标和我的应用程序目标中都设置为 NO
  4. 确保Enable Bitcode在我的 pod 目标和我的应用程序目标中都设置为 NO
  5. 完全删除 .xcworkspace,清理项目,删除派生数据,并重新安装 podfile

这些都没有帮助。有没有人遇到过这个?我已经处理了所有看起来相关的不同 StackOverflow 问题,但没有任何补救措施有帮助。任何提示将不胜感激!

让我知道提供更多信息是否对我有用。谢谢!

0 投票
0 回答
845 浏览

ios - 指定 -remove 选项时,输入文件 XXXX 必须是胖文件

我正在尝试通过 fastlane 将我们的应用程序发布到 testflight/appstore,但出现以下两个错误:

  1. 致命错误:lipo:指定 -remove 选项时,输入文件 (==FILEPATH==/CommonCrypto.framework/CommonCrypto) 必须是 fat 文件

  2. 致命错误:lipo:无法打开输入文件:==FILEPATH==/Frameworks/CommonCrypto.framework/CommonCrypto(没有这样的文件或目录)


在我收到这些错误之前,我遇到了很多“不支持的架构”错误。

错误 ITMS-90087:“不支持的架构。==APPNAME==.app/Frameworks/==FRAMEWORK_NAME==.framework 的可执行文件包含不支持的架构 '[x86_64, i386]'。”

错误 ITMS-90087:“不支持的架构。==APPNAME==.app/Frameworks/CommonCrypto.framework 的可执行文件包含不支持的架构‘[x86_64]’。”

所以我将此脚本添加到构建阶段:(来自另一个堆栈溢出帖子)


构建设置:

  • 架构:标准架构
  • 基础 SDK: iOS 11.0
  • 仅构建活动架构: YES(尝试过 NO)
  • 支持平台: iOS
  • 有效架构: arm64、arm7、arm7s

笔记

commoncrypto框架是在嵌入式二进制文件中手动添加的,因为它只能通过 Carthage 获得。但该项目主要使用cocoapods。


我想删除脚本会解决它。但随后又回到了老问题。

但感谢所有帮助!

0 投票
1 回答
3426 浏览

ios - 创建通用胖框架 lipo:无法创建临时输出文件

在从聚合目标创建 Fat 框架时,我正在关注此gist 链接中的构建阶段脚本,并对我的脚本链接进行了细微更改。

在目标构建中,Xcode 显示胎儿错误:lipo:无法创建临时输出文件:/${PROJECT_NAME}.framework/${PROJECT_NAME}.lipo(没有这样的文件或目录)

请参阅下图以供参考

构建错误

更新了最终的工作脚本

0 投票
1 回答
1918 浏览

ios - 创建通用 Objective-C 框架,LIPO 无法映射输入文件

过去一天一直在研究这个问题,但没有成功,希望有人可以提供一些指示。

我继承了一个旧的 objC 静态库项目,我正在尝试将其转换为动态的通用框架。

为框架创建了一个新目标,编译没有问题(经过一些构建设置调整)创建了一个新聚合,添加了一个运行脚本阶段:

当我尝试生成框架时,出现错误:

.framework 已创建,并将其导入客户端项目允许为设备编译,但模拟器抛出“未找到框架错误”

我过去做过这些框架,但只有 w/swift 代码,任何帮助/指针将不胜感激

0 投票
0 回答
393 浏览

xcode - 如何在 xcode 10 上创建胖二进制文件

我正在尝试使用 XCode 10 (10A255) 使用 Fastlane 制作我的库的胖二进制文件:

但是运行lipo -i ~/Mylibrary.framework/Mylibrary我只得到armv7 arm64不能在模拟器上运行的东西。

有谁知道发生这种情况的原因?

PS:相同的命令在 Xcode 9.4 和 lipo -i 打印i386 x86_64 armv7 arm64上工作正常。

0 投票
0 回答
2814 浏览

objective-c - Xcode 10 致命错误:lipo:无法打开输入文件

我在objective-c中构建一个静态库,在Xcode 9中我可以毫无问题地构建,但我在Xcode 10中被阻止了。最初我遇到了这两个问题,我用下面的答案解决了

Xcode 10 错误:产生多个命令

Xcode 10:无法附加数据库错误

现在我有这个 lipo 错误,我已经尝试了将 arm64 添加到有效架构并仅构建有效架构的解决方案

构建设置图片

** 构建成功 **

致命错误:lipo:无法打开输入文件:/Users/Alex/Library/Developer/Xcode/DerivedData/myNewLibrary-gvpwgkkoffdnkybybgkafnqwepcx/Build/Products/Debug-iphoneos/arm64/myNewLibrary/myNewLibrary(没有这样的文件或目录)命令PhaseScriptExecution 失败,退出代码非零

任何人都知道如何解决?谢谢

0 投票
2 回答
6077 浏览

xcodebuild - iOS 14,为设备和模拟器创建库时出现 lipo 错误

我们一直在使用 lipo 命令来创建一个框架,该框架在集成到其他项目时可以在设备和模拟器上运行。以下是用于生成设备和模拟器构建的构建命令

在此之后,我们将 swift 模块从 iphonesimulator(如果存在)复制到复制的框架目录

然后是 lipo 命令

上述命令失败并出现以下错误

我尝试了 stackoverflow 中的一个答案,即添加用户定义的设置 VALID_ARCHS 然后将其删除。但这没有用

0 投票
1 回答
483 浏览

x86 - 使用 lipo 创建的 arm64/x86_64 通用二进制文件缺少部署目标

语境

我正在将我的 Mac 应用程序使用的几个库/框架转换为新 Apple Silicon Macs 的通用二进制文件。

问题

我有两个版本的二进制框架:一个x86_64arm64. 我总是检查框架otool以确保正确设置了最小部署目标。为此,我使用以下命令:

在输出中,我看到了我所期望的:

arm64在二进制文件上运行相同的命令11.0会生成arm64.

然而:

一旦我将这两个库组合成一个胖二进制文件,使用:

当我otool -lv在通用二进制文件上运行时,我再也无法LC_VERSION_MIN_MACOSX在输出中的任何位置找到该命令。它没有出现。

如何验证x86_64胖二进制文件的部分是否设置了正确的部署目标?谢谢你。

0 投票
0 回答
202 浏览

macos - lipo - 当指定 -thin 选项时,输入文件必须是 fat 文件

我正在尝试从 UNIX 可执行文件 (vmware-vmx) 中提取一些东西。

当我尝试执行lipo vmware-vmx -thin i386 -output vmware_x64时,出现错误

input file (vmware-vmx) must be a fat file when the -thin option is specified

它是什么,我该如何解决?