繁体   English   中英

为iOS编译C源代码

[英]Compiling C Source for iOS

我有一些用C编写的现有源代码,我想构建并包含在我的iOS项目中。 整个源包非常大,使用现有的Makefile和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和已经有一段时间(出货开发工具GCC苹果的最后一个版本是吱吱作响的和过时的,肯定不会支持ARMv8)。

获得clang的常用方法是安装Xcode(从App Store免费)。 安装程序(以及Xcode的UI)中有一个选项可以安装命令行工具包。 这会将/usr/bin中的sym-links安装到编译器中,并安装一些您可能期望的其他内容,例如make

clang (大多数)命令行与gcc兼容,而且,你会发现如果你在安装了dev-tools的Mac上从命令行运行gcc ,你实际上就会得到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,并且可以配置为从命令行编译任何这些(参见文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM