为iOS编译C源代码

为iOS编译C源代码,第1张

概述我有一些用C编写的现有源代码,我想构建并包含在我的iOS项目中.整个源包非常大,使用现有的Makefile和GCC构建.它正在生成静态库(.a文件),我很乐意转移到我的iOS项目.但是,Makefile生成的静态库是针对x86处理器的,这显然不适用于iOS. 有没有办法可以切换GCC来构建ARMv7 / ARM64,而无需更改现有源(在大多数情况下)?我知道有GCC的-march开关,或者你可以下 我有一些用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的默认系统编译器已经有一段时间了(已经有一段时间了(开发工具中提供的GCC apple的最后一个版本是嘎吱嘎吱和过时的,绝对不支持ARMv8).

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

clang(大多数)命令行与gcc兼容,而且,你会发现如果你在安装了dev-tools的Mac上从命令行运行gcc,你实际上就会得到clang.

$gcc --versionConfigured 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.1Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)Target: x86_64-apple-darwin14.0.0Thread model: posix

clang在MacOSX上附带ARMv7,ARMv8,i686,x86_64,并且可以配置为从命令行编译任何这些(参见documentation)

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

总结

以上是内存溢出为你收集整理的为iOS编译C源代码全部内容,希望文章能够帮你解决为iOS编译C源代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存