雑記帳

ちょっとした文章とかメモ書きとか。

UbuntuでObj-C&Foundationフレームワーク環境を整える

Obj-CをUbuntuで学習したい!

ということで調べてみたのでメモ。

Obj-CではFoundationフレームワークを使う場合が多く、
この場合はgccのobj-cサポートを追加しただけではコンパイルできません

ではFoundationフレームワークを使うにはどうしようかというのが次のステップ。

GNUstep?

GNUstepにObj-Cのフレームワークが凝縮されています。
Synaptic等を使いgnustepとgnustep-devパッケージをインストールしましょう。

Obj-Cのプログラムをコンパイルする場合は

$gcc main.m -lgnustep-base -fconstant-string-class=NSConstantString

となるようにします。
-fconstant-string-class=NSConstantStringは@で始まる文字列をコンパイラが受け取れるようにします。

export NS=-lgnustep-base -fconstant-string-class=NSConstantString

として~/.bashrc等に登録しておくといいかも知れません。

GNUstepのライブラリとヘッダーを使う注意点

<Foundation/Foundation.h>をインクルードするということはできないということです。
NS~で始まる型を持つメソッドを使う時は使いたいNS~に対応するヘッダーを個別にインクルードする必要があります。

おまけ:Ubuntuでlibdispathを使いたい!

Synapticから探すとlibdispatchがあるのでインストール。

libdispatchは珍しく現時点ではgccが対応してないので
LLVM 3.0以上のclangでしかコンパイルできません。LLVM 3.0以上のclangはなんとか自分で調達してください。。。

UbuntuではLLVM 3.0以上のclangで

$clang -o main main.c -fblocks -ldispatch -lBlocksRuntime

とするとlibdispatchを使ったコードがコンパイル出来るようになります。
デフォルトではlibdispatchの構文解析が有効になってないので-fblocksを忘れずに。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。