{{category プログラミング}} {{category FreeBSD}} {{category Objective-C}} Objective-Cという言語については,[このページ|http://wisdom.sakura.ne.jp/programming/objc/index.html]が参考になります. 以降はFreeBSD上にObjective-Cな環境を構築して,コンパイルするまでのメモです. !FreeBSDでObjective-C ==FreeBSDを標準の環境でインストールした場合,デフォルトのgccでObjective-Cは扱えないなようです.==(FreeBSD 6.0-RELEASEでは、コンパイルできるようです。) Objective-Cを使う場合には,gccのObjectクラスよりGNUstepを使ってプログラミングする方が便利なので,とりあえず,GNUStepをインストールしましょう.==portsの場合,devel/gnustepです.gccも一緒にコンパイルされます.2005年1月30日現在では,/usr/local/bin/gcc33として,インストールされます.== GNUstepは/usr/local/GNUstep以下にインストールされます. !とりあえずHelloWorld. Objective-CではCで書いたプログラムが普通にコンパイルできるので, #include int main(int argc, char **argv){ printf("Hello World.?n"); } を,test.mという名前で保存して, % gcc test.m -lobjc とかやってコンパイルできます. pthread関係のライブラリのリンクで怒られる場合には、 % gcc test.m -lobj.c -pthread として、pthreadオプションを明示的に指定しなければいけません。 !Objective-CでHelloWorld. とりあえず,オブジェクト作るサンプル. #include #include @interface Hoge : Object -(void)fefe @end @implementation Hoge -(void)fefe{ printf("Hello World.?n"); } @end int main(int argc, char **argv){ Hoge * hoge = [Hoge alloc]; [hoge fefe]; return 0; } !NSObject GNUstepで提供されている,NSObjectを使おう.ということで,ソースコードはこんな感じ.今度はObjectクラスのかわりにNSObjectを継承しています. #include #include @interface Hoge : NSObject - (void) fefe; @end @implementation Hoge -(void)fefe{ printf("Hello World.?n"); } @end int main(int argc, char **argv){ id hoge = [Hoge alloc]; [hoge init]; [hoge fefe]; [hoge dealloc]; } ファイル名がtest.mであれば,コンパイルはこんな感じ % gcc test.m -I/usr/local/GNUstep/System/Library/Headers ? -L/usr/local/GNUstep/System/Library/Libraries -lgnustep-base インクルードパスと,ライブラリパスに注意する必要があるよ,ということです. もし、objc_get_classが解決できないなどのエラーがでる場合には、-lobjcを指定しなければなりません。 実行時には,LD_LIBRARY_PATHに/usr/local/GNUstep/System/Library/Librariesを追加した上で, % ./a.out とするか、 % LD_LIBRARY_PATH=/usr/local/GNUstep/System/Library/Libraries ./a.out とかです. !#include?#import? gcc3.3では、#importを使っていると、なぜか警告がでましたが、gcc3.4ではでないようです。