ios - C 代码可以编译成任何架构的静态库吗?

标签 ios c objective-c static-libraries arm64

我找到了一个我想在我的 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/

相关文章:

c - 为动态字符串列表分配内存

ios - 在运行时获取主 Storyboard

c - 返回除数之和的函数,不带余数,C

iphone - 是否有任何 Bayeux 协议(protocol)的 iOS 实现(COMET,服务器推送到客户端)?

ios - 图片库图片网址“assets-library://asset/asset.JPG?id = 1000000007&ext = JPG”为零

ios - 使用 NSSecureCoding 强制类型

ios - CALayer 在后台绘图

ios - 更新 UITableViewCell 内容的正确位置

ios - 在 Swift 中使用框架

c - 试图理解c中的死锁