Leo*_*Leo 6 objective-c clang ios lipo
当尝试为模拟器和设备构建胖静态库时,我们遇到了 lipo/libtool 的问题。在 M1 arm64 之前,设备的 armv7/arm64 切片和模拟器的 x86_64 切片都运行良好。现在 lipo 无法识别模拟器的 arm64 构建和设备的 arm64 构建之间的差异,并且拒绝添加 2 个 arm64 切片。
有没有办法构建“通用”arm64 lib 切片(因为我们 lib 中的代码与平台无关)
是否有其他工具可以实现将 2 个 arm64 切片打包到 .a 中,或者我们现在需要为模拟器和设备构建 2 个单独的静态库吗?(请注意,我们不使用 Xcode 进行构建,因此我们只是在命令行上进行链接)。
有趣的是,当链接动态标准库(例如 libxml)时,无论平台如何, -lxml 就足够了,但这适用于动态库,而不是静态库。静态库是否存在类似的机制?
我们最终为所有静态库创建了 2 个独立的版本:一个包含设备的 arm64 代码,另一个包含模拟器的 x86_64 和 arm64 片段。使用 clang 编译时一次性为对象创建两个模拟器切片的命令行技巧是
clang -target x86-apple-ios-simulator -target arm64-apple-ios-simulator -arch x86_64 -arch arm64 ...
Run Code Online (Sandbox Code Playgroud)
链接时,我们有单独的后缀,例如 libFOO_S.a 表示模拟器库,并根据是否为模拟器构建选择合适的后缀。我没有找到一种方法将设备/模拟器的所有切片都放在一个 fat .a 中......这根本无法预见。
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |