我找到了一个我想在我的 iOS 项目中使用的 C 库。
该库带有一个生成文件,它将把源代码编译到 .a
中。文件。当我运行 lipo archs
结果.a
, arm64
不包括 iOS 所必需的。
如果我手动将所有 C 源代码和头文件放入我的 iOS 项目中,一切都会编译和链接。然而,这是一个笨拙的解决方案,因为它将数百个文件添加到我的主项目中,并且库似乎无论如何都不能正常工作。
如果我尝试在 Xcode 中创建一个新的 iOS 静态库项目并将所有 C 源代码和头文件放入其中,我会为每个生成的 .o
生成构建错误。文件类似:Building for iOS, but the linked item '<item>.o' was built for macOS
.
我在尝试做一些不可能的事情吗?什么本质上决定了 C 源代码可以构建的兼容架构?
最佳答案
动态库和静态库都反射(reflect)了 Objective-C PU,只是来自 cc -c 的 .o 目标文件的集合,但当然您必须拥有编译器并将其定向到 Objective-C PU。您不必运行 Objective-C PU。对于每个目标,您需要制作特定的 .o、.a、.so 或 .dll 或任何他们称之为对象和库文件的文件。同一 CPU 的操作系统之间可能存在交叉兼容性。它取决于目标操作系统的链接器和加载器。我们已经在各种 x86 操作系统的 COFF 和 ELF 文件中看到了这一点。
高度优化的代码只能在正确的 Objective-C PU 和可能的正确目标操作系统上完全实现,尽管它可能在其他兼容系统上运行良好。
关于ios - C 代码可以编译成任何架构的静态库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63199904/