阳光烂灿的日子

--记录所有碎碎念

Objective-C的hello World

| Comments

Objective-C 似乎是mac平台上的专用语言,起码在windows/linux下少见用它写的东西。
历史我也不熟,随便扯两句,老乔被赶出苹果后,又组了个公司叫NextStep, 专用Objective-C开发,后来老乔又重回苹果公司,于是买下了NextStep,然后风声水起地做起了mac osx, 再然后有了ipod, iphone,ipad,于是Objective-C也灸手可热了。

mac的机器也忒贵了。还好其实GCC是支持Objective-C的,我们用linux平台来学习一下Objective-C也是可以的。先来个hello world吧,世界通例了。

#import 

int main(int argc,char *argv[])
{

printf(“hello Objective-C\n”);
return 0;
} 保存成hello.m文件。

呃,你是不是想说,坑爹哩,除了第一行,这完全是C嘛。呃,人家有亲戚关系嘛,Objective-C是C的超集。具体来说呢,就是以后再说,现在我只会这么点。好了,来编译吧。
等等,先把gcc的objective-c支持给装上。
在ArchLinux上是这样的

sudo pacman -S gnustep-core 
其它发行版各自找相关名字的软件包。
然后编译吧
gcc hello.m -lobjc 
好吧,等着一堆错吧
In file included from /usr/include/Foundation/NSClassDescription.h:30:0,
                 from /usr/include/Foundation/Foundation.h:50,
                 from a.m:19:
/usr/include/Foundation/NSException.h:42:2: error: #error The current setting for native-objc-exceptions does not match that of gnustep-base ... please correct this.

求助于万能的google,在一韓文博客上找到答案,。
正确的编译命令:

  gcc `gnustep-config --objc-flags`  hello.m -o hello -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -lgnustep-base 
这个gnustep-config –objc-flags命令就像当年学gtk+时 pkg-config的命令一般,大家注意那个反斜杠了。其实上面那个源码没用到啥gnustep特别的库,所以直接用gnustep-config –objc-flags就能搞定了。

回头看看那个#import吧,用来代替#include的东西,据说还有#ifndef的功效。

hello world能运行了,第一步完成。

Comments