2016年3月25日金曜日

Raspberry PIでObjective-C開発環境を整える

Raspberry PI2のRaspbian上でObjective-Cの開発環境を整える。
環境:Raspberry PI2 B+, Raspbian Jessie

Raspbian上でObjective-Cをビルドするには、gccまたはclang(+LLVM)とGNUStepのインストールが必要

※GNUStep(GNUStepBaseはFoundationフレームワークを含むライブラリ群。実用的に必須。
※gccはRaspbianにはデフォルトでインストールされている。
※clangは使いたい場合のみインストール。

以下、clangとGNUStepのインストールから、サンプルのコンパイルまでを示す。


1.clang (+LLVM)のインストール(任意)

sudo apt-get install clang

2.GNUStepのインストール

sudo apt-get install gnustep

3.サンプルのビルド

以下、HelloWorld.mのあるディレクトリでビルドする場合の例。

clangの場合:

clang -o HelloWorld HelloWorld.m -l objc -l gnustep-base -I /usr/include/GNUstep/ -fconstant-string-class=NSConstantString

gccの場合:

gcc -o HelloWorld HelloWorld.m -l objc -l gnustep-base -I /usr/include/GNUstep/ -fconstant-string-class=NSConstantString


※コンパイラオプションの解説

-o [バイナリ名 ソースファイル名...] :
ビルド(コンパイル+リンク)後のバイナリファイル名と、 ビルドするソースファイル名(またはオブジェクトファイル名)を指定する。上記では、HelloWorldというバイナリファイル名、HelloWorld.mというソースファイル名を指定している。

-l [ライブラリサーチパス] : 

コンパイル時に使用するリンクを指定する
上記ではobjcとgnustep-baseを指定。gnustep-baseはFoundationフレームワークを含むライブラリ。また、AppKitフレームワークを使う場合は、gnustep-guiを追加で指定する必要がある。

-I [ヘッダサーチパス] : 

ヘッダファイルを含むディレクトリパスを指定する
上記ではFoundationフレームワークのヘッダファイルを含む/usr/include/GNUstep/を指定している。他のサイトではGNUstepのディレクトリが他になっている場合があるが、自分で試した場合は上記のパスにインストールされていた。

-fconstant-string-class=クラス名:

gcc/clangで使用する文字列定数クラスを変更するオプション。gccのデフォルトではNXConstantStringクラスが使用され、これを使用する場合はソースコードでobjc/NXConstStr.hファイルをインクルードする必要がある。Foundationフレームワークでは文字列定数クラスはNSConstantStringクラスであるため、変更が必要。
https://gcc.gnu.org/onlinedocs/gcc/Constant-string-objects.html

以上

0 件のコメント: