从linux命令行编译IOS程序

sau*_*abh 12 linux command-line ios

我想从linux终端(命令行)编译我的IOS应用程序....是否可以这样做,如果是,那怎么样?

bar*_*met 11

是的,这是可能的.

至少你需要:

  1. 汇编程序和链接器:来自apple opensource的cctools和ld64.
  2. 编译器:Clang/LLVM
  3. SDK,包括标头和库.
  4. 实用程序:例如ldid codesign工具.

第1步:编译器

强烈推荐并测试Clang/llvm> = 3.2.

如果你想从头开始构建clang/llvm,请参考这个链接为你的linux发行版构建一个svn版本.

如果您的发行版已经提供了clang/llvm软件包,请确保它是3.2版本或更高版本.较低版本可能有效,但未经过测试.

对于Ubuntu 13.04及更高版本,已在回购中提供clang/llvm,请运行:

$sudo apt-get install gcc g++ clang libclang-dev uuid-dev libssl-dev libpng12-dev libicu-dev bison flex libsqlite3-dev
Run Code Online (Sandbox Code Playgroud)

要安装一些开发包,应自动安装与llvm/llvm-dev相关的其他开发包.

第2步:汇编程序和链接程序

最新的cctools-855和ld64-236.3已从Apple opensource移植到linux.移植过程有点复杂,还有许多针对linux修改的代码,让我们跳过它.

请查看以下代码:

svn checkout http://ios-toolchain-based-on-clang-for-linux.googlecode.com/svn/trunk/cctools-porting
Run Code Online (Sandbox Code Playgroud)

建立它:

$ sed -i 's/proz -k=20  --no-curses/wget/g' cctools-ld64.sh
$ ./cctools-ld64.sh
$ cd cctools-855-ld64-236.3
$
$ ./configure --target=arm-apple-darwin11 --prefix=/usr
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

对于Ubuntu 13.04,由于clang/llvm 3.2包使用自定义库/头路径.请在运行configure之前先设置CFLAGS和CXXFLAGS.

$export CFLAGS="-I/usr/include/llvm-c-3.2"
$export CXXFLAGS="-I/usr/include/llvm-c-3.2"
Run Code Online (Sandbox Code Playgroud)

第3步:iPhoneOS SDK.

从xcode中提取的带有ARC支持的旧iPhone SDK已在下载部分中提供.您可以直接下载并将其解压缩到/ usr/share

对于iOS 4.2:https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iPhoneOS4.2.sdk.tar.xz

对于iOS 5.0:https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iPhoneOS5.0.sdk.tar.xz

对于iOS 6.0:https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iPhoneOS6.0.sdk.tar.xz

对于其他iOS版本,您可能需要按照以下步骤为自己获取SDK.

第4步:实用程序

iphonesdk-utils是一个用于iOS开发的实用程序集合,提供以下实用程序:

注意:(其中一些是从互联网上收集并进行一些修改.)

ldid:codesign工具,支持armv7/armv7s以及orig版本的其他更改.链接完成后,它将被ld64所涉及.ios-clang-wrapper:自动查找SDK并构建适当的编译参数.ios-switchsdk:存在多个版本的SDK时切换sdk.ios-pngcrush:png crush/de-crush工具,就像Apple的pngcrush.ios-createProject:项目模板ios-genLocalization:基于clang lexer的iOS应用程序本地化工具.ios-plutil:plist编译器/反编译器.ios-xcbuild:将xcode项目转换为makefile,直接在linux下构建xcode项目.从以下网址下载源代码tarball:https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iphonesdk-utils-2.0.tar.gz

构建并安装它:

$./configure --prefix=/usr
$make
$make install
Run Code Online (Sandbox Code Playgroud)

构建应用程序

现在,您只需执行以下操作即可构建和安装项目:

$cd ProjectDir
$make
$make install IPHONE_IP=<your own device IP
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到完整信息 - https://code.google.com/p/ios-toolchain-based-on-clang-for-linux/wiki/HowTo_en