gpt4 book ai didi

ios - 为 iOS 编译 C 源代码

转载 作者:可可西里 更新时间:2023-11-01 03:55:52 28 4
gpt4 key购买 nike

我有一些用 C 编写的现有源代码,我想将其构建并包含在我的 iOS 项目中。整个源码包非常大,是使用现有的 Makefiles 和 GCC 构建的。它正在生成静态库(.a 文件),我很乐意将其转移到我的 iOS 项目中。但是,Makefile 生成的静态库适用于 x86 处理器,这显然不适用于 iOS。

有没有一种方法可以将 GCC 切换为针对 ARMv7/ARM64 构建,无需更改现有源(在大多数情况下)?我知道 GCC 有 -march 开关,或者您可以下载特定于 ARM 的 GCC 编译器,所以我知道为不同于构建机器的架构构建的一般概念。

要在 Mac OS 上构建 ARM,我是否必须下载不同的 GCC 编译器,或者该功能是否内置于默认 GCC 中?

很抱歉对这里的基本概念缺乏理解;我主要是一名 Java 和 Objective-C 开发人员,因此为不同的架构构建源代码对我来说是一个很陌生的概念。

最佳答案

虽然 GCC 支持许多 CPU 架构和平台,但它通常是为单个架构和平台构建的。要为 ARM 进行编译,您通常需要适当定位的 ARM 交叉编译 GCC。

所有架构的 MacOSX 和 iOS 的默认系统编译器是 clang 并且已经有一段时间了(dev tools 中发布的最新版本的 GCC apple 已经过时了,而且绝对不会支持 ARMv8)。

获取 clang 的常用方法是安装 Xcode(可从 App Store 免费获取)。安装程序(以及 Xcode 的 UI)中有一个选项可以安装命令行工具包。这会将 /usr/bin 中的符号链接(symbolic link)安装到编译器,并安装一堆您可能期望的其他东西,例如 make

clanggcc(大部分)命令行兼容,此外,如果您从在安装了 dev-tools 的 Mac 上的命令行,你实际上得到了 clang。

$ gcc --version
Configured with: -- prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix

clang 在 MacOSX 上随 ARMv7、ARMv8、i686、x86_64 一起提供,并且可以配置为从命令行编译其中的任何一个(参见 documentation)

鉴于上述情况,您的代码很有可能会使用现有的 makefile 对编译器标志进行最少的更改。您可能需要阅读 lipo 的文档- 允许您生成多架构二进制文件。

关于ios - 为 iOS 编译 C 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28323367/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com