上のgcc経由のiOS Objective-Cのコマンドラインアプリケーションをコンパイルします。はここで非常に単純なObjective-CのコンソールアプリケーションであるMAC
私のMacにはiOS SDKがインストールされています。このコマンドを変更するには、私のコンピュータと同じコードをコンパイルして、(jailbroken)iOSデバイスで使用しますか?
次に、実行可能ファイルをsshで転送し、ldid
で署名することができます。
上のgcc経由のiOS Objective-Cのコマンドラインアプリケーションをコンパイルします。はここで非常に単純なObjective-CのコンソールアプリケーションであるMAC
私のMacにはiOS SDKがインストールされています。このコマンドを変更するには、私のコンピュータと同じコードをコンパイルして、(jailbroken)iOSデバイスで使用しますか?
次に、実行可能ファイルをsshで転送し、ldid
で署名することができます。
はコンパイルのために次のことを明らかにした:
/開発/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -x objective-c -arch armv6 -fmessage-length = 0 -fdiagnostics-print-source-range-info -fdiagnostics-show-category = id - fdiagnostics-parseable-fixits -std = gnu99 -Wno-trigraphs -fpascal-strings -O0 -Wissing-prototypes -Wreturn-type -Wraphesises -Wswitch -Wno-unused-parameter -Wunu SED-可変-Wunused値 -DDEBUG = 1 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -gdwarf-2 -mthumb「-DIBOutlet = 属性((iboutlet ))」 "-DIBOutletCollection(クラス名)= 属性((iboutletcollection(クラス名)))" "-DIBAction =ボイド)属性((ibaction)" -miphoneosバージョン分= 3.2 -iquote [ -I [インクルードパス] -I [ヘッダーのリスト] -iquote [more ヘッダー] -I [インクルードパス] -fpch-preprocess -F [デバッグファイル用のディレクトリ へのポインタ] -include [my prefix header] -c AppDelegate.m -o AppDelegate。 o
あなたがXcodeの使用を断念しているのであれば、少なくともInterface Builderアウトレットについての情報を減らすことができると思います。そしてv7ではなくarmv6のためのビルドは私のプロジェクトではおそらくエラーです。
そして、リンクへ:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang -arch ARMv6の-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/ SDK/iPhoneOS4.3.sdk -L [何か適切な] -F [何かが適切な] -filelist [a .LinkFileList] -dead_strip -miphoneos-version-min = 3.2 -framework SystemConfiguration -framework UIKit -framework Foundation -framework CoreGraphics -o [何か適切]
.LinkedFileListファイルは、1行に1つずつ、オブジェクトファイルのリストのように見えます。 Xcodeはそこにそれぞれ完全なパスを入れましたが、私は相対パスを受け入れられると思っていました。
これは完全な回答ではありませんが、うまくいけばそれは役に立ちますか?
gcc
に直接電話するのではなく、xcodebuild
を使用しないのはなぜですか? Xcodeのは、使用するコマンドラインを明らかにする位置に入るように、あなたが意図的に私のプロジェクトでエラーをトリガ、fusty古いGCCに結婚していないと仮定すると、
簡単な例では、これは十分に良いかもしれません:
gcc -o output -Wall -std=c99 source.m -framework Foundation -lobjc
更新:
このコマンドは、iOSコマンドラインアプリケーションでは動作しません - アーチを正しく設定する必要があります。私は現時点ではiOSの開発環境を持っていません。おそらく-marchフラグが役に立ちます。
回答を参照してください。
ニース!これは動作します;) – diegocaro
'gcc'を' clang'に置き換えることもできます。 –
@keith:これはおそらく正しい将来の答えです。 Appleはある時点でclangの周りにgccラッパーの出荷を停止するかもしれない。 – radiospiel
MacでiOSコードをコンパイルするには、クロスプラットフォームのコンパイラ、つまりIntelプラットフォーム上で実行され、ARMバイナリコードを生成できるコンパイラを使用する必要があります。
Xcodeはこのようなクロスコンパイラを提供しています。これは、プログラムの簡単な、 "Hello World" の種類について
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
(あなたがApp Storeでから配信のXcode 4.3を使用していると仮定した場合)に配置されて、私は
alias c="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2"
c -o hello hello.c -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/
それはうまくいった!ありがとう! – daviewales
を使用してコンパイルしていますことは 'ないですxcodebuild'はXcodeプロジェクトのみをコンパイルするためのものですか?私はXcodeの使用を避ける方法を知りました。 – Klaus
ああ。確かに。次に、これを行うことができます:iOS Xcodeプロジェクトを作成し、コマンドラインから 'xcodebuild'を呼び出して、彼がコマンドラインで実行しているgccへの呼び出しを観察します。そして、あなたはどのコマンドラインパラメータを使うのかを知ることができるはずです...ナードは 'xcodebuild'を使わずに' gcc'を使って自分で使うことができるはずです – AliSoftware
これは**私が探していたものです。 – To1ne