【问题标题】:Compile IOS program from linux commandline从linux命令行编译IOS程序
【发布时间】:2015-01-22 09:20:55
【问题描述】:

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

【问题讨论】:

    标签: ios linux command-line


    【解决方案1】:

    是的,有可能。

    至少你需要:

    1. 汇编器和链接器:来自苹果开源的 cctools 和 ld64。
    2. 编译器:Clang/LLVM
    3. SDK,包括头文件和库。
    4. 实用程序:如 ldid 协同设计工具。

    第 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

    【讨论】:

    • 嗨,这个需要DUNS号码吗??
    • $./cctools-ld64.sh -- 似乎不起作用,因为这个脚本中的这个链接什么都没有(链接 -- "opensource.apple.com/tarballs/cctools/cctools-839.tar.gz/")
    • 不,没问题,这个 URL (opensource.apple.com/tarballs/cctools/cctools-839.tar.gz) 有存档。在执行./cctools-ld64.sh 之前尝试sed -i 's/proz -k=20 --no-curses/wget/g' cctools-ld64.sh。那对我有用。我还将编辑一个答案。万一这不起作用——你用什么 linux?
    • 嗨,我尝试了 sed 命令来替换文本,文本确实被替换了,但我仍然收到此消息:./cctools-ld64.sh: line 27: proz: command not found ./cctools-ld64.sh:第 28 行:md5sum:找不到命令
    • $ sed -i 's/proz -k=20 --no-curses/wget/g' cctools-ld64.sh — 这只是表示没有应用 sed 命令,再试一次。或者,如果您愿意,您可以用手将所有proz 呼叫替换为wgetcurl。当然,您需要在系统上安装 wget 或 curl。 ./cctools-ld64.sh: line 28: md5sum: command not found — 您需要安装 md5sum,在大多数 linux 发行版中,它包含在 coreutils 包或类似包中。
    【解决方案2】:

    如果不是小牛队,Barjomet 给出的上述解决方案是正确的,但如果是小牛队,则解决方案如下:

    1) 安装合适的命令行工具 2)用于构建:a)xcodebuild -list -project .xcodeproj b)- xcodebuild -scheme 构建

    详细参考可以参考以下链接:

    https://developer.apple.com/library/ios/technotes/tn2339/_index.html.

    【讨论】:

    • mavericks 不是 linux。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2013-07-30
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多