【发布时间】:2015-01-22 09:20:55
【问题描述】:
我想从 linux 终端(命令行)编译我的 IOS 应用程序...... 是否可以这样做,如果可以,那怎么做?
【问题讨论】:
标签: ios linux command-line
我想从 linux 终端(命令行)编译我的 IOS 应用程序...... 是否可以这样做,如果可以,那怎么做?
【问题讨论】:
标签: ios linux command-line
是的,有可能。
至少你需要:
第 1 步:编译器
强烈推荐使用 Clang/llvm >= 3.2 并经过测试。
如果您想从头开始构建 clang/llvm,请参考此链接为您的 linux 发行版构建一个 svn 版本。
如果您的发行版已经提供了 clang/llvm 包,请确保它是 3.2 或更高版本。较低版本可能有效,但未经测试。
对于 Ubuntu 13.04 及更高版本,clang/llvm 已在 repos 中提供,请运行:
$sudo apt-get install gcc g++ clang libclang-dev uuid-dev libssl-dev libpng12-dev libicu-dev bison flex libsqlite3-dev
要安装一些开发包,其他与llvm/llvm-dev相关的开发包应该自动安装。
第 2 步:汇编器和链接器
最新的 cctools-855 和 ld64-236.3 已从 Apple 开源移植到 linux。移植过程有点复杂,针对linux修改了很多代码,略过吧。
请查看以下代码:
svn checkout http://ios-toolchain-based-on-clang-for-linux.googlecode.com/svn/trunk/cctools-porting
构建它:
$ 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
对于 Ubuntu 13.04,由于 clang/llvm 3.2 软件包使用自定义库/头文件路径。请在运行配置前先设置 CFLAGS 和 CXXFLAGS。
$export CFLAGS="-I/usr/include/llvm-c-3.2"
$export CXXFLAGS="-I/usr/include/llvm-c-3.2"
第 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版本,您可能需要关注these steps来获取自己的SDK。
第 4 步:实用程序
iphonesdk-utils 是一个 iOS 开发的实用程序集合,提供以下实用程序:
注意:(其中一些是从互联网收集的,经过一些修改。)
ldid : 协同设计工具,支持 armv7/armv7s 以及与 orig 版本相比的其他更改。链接完成后,它将由 ld64 调用。 ios-clang-wrapper : 自动查找 SDK 并构造正确的编译参数。 ios-switchsdk : 存在多个版本的 SDK 时切换 sdk。 ios-pngcrush:png 粉碎/去粉碎工具,类似于 Apple 的 pngcrush。 ios-createProject : 项目模板 ios-genLocalization : 基于 clang lexer 的 iOS 应用本地化工具。 ios-plutil : plist 编译器/反编译器。 ios-xcbuild : 将xcode项目转换为makefile,直接在linux下构建xcode项目。 下载源码包:https://ios-toolchain-based-on-clang-for-linux.googlecode.com/files/iphonesdk-utils-2.0.tar.gz
构建并安装它:
$./configure --prefix=/usr
$make
$make install
构建应用
现在您可以简单地构建和安装您的项目:
$cd ProjectDir
$make
$make install IPHONE_IP=<your own device IP
您可以在此处找到完整信息 — https://code.google.com/p/ios-toolchain-based-on-clang-for-linux/wiki/HowTo_en
【讨论】:
./cctools-ld64.sh 之前尝试sed -i 's/proz -k=20 --no-curses/wget/g' cctools-ld64.sh。那对我有用。我还将编辑一个答案。万一这不起作用——你用什么 linux?
$ sed -i 's/proz -k=20 --no-curses/wget/g' cctools-ld64.sh — 这只是表示没有应用 sed 命令,再试一次。或者,如果您愿意,您可以用手将所有proz 呼叫替换为wget 或curl。当然,您需要在系统上安装 wget 或 curl。 ./cctools-ld64.sh: line 28: md5sum: command not found — 您需要安装 md5sum,在大多数 linux 发行版中,它包含在 coreutils 包或类似包中。
如果不是小牛队,Barjomet 给出的上述解决方案是正确的,但如果是小牛队,则解决方案如下:
1) 安装合适的命令行工具 2)用于构建:a)xcodebuild -list -project .xcodeproj b)- xcodebuild -scheme 构建
详细参考可以参考以下链接:
https://developer.apple.com/library/ios/technotes/tn2339/_index.html.
【讨论】: