第一次听说Objective
C可以在非Apple机器上写的时候完全震惊了。于是自己分别在Windows和Ubuntu上进行了尝试,Windows上面没有搭建成功,Ubuntu上历经千辛万苦终于成功了。绝对要把过程记录下来。
在Ubuntu下面搭建Xcode之外的环境,得依靠GNUStep。网上有很多教程,但是很多都是错的,或者是因为版本太老,已经无效了。很多人没有经过验证就拿来转贴,实在是捉急。本文所述的方法,在Ubuntu
14.04 LTS版本下验证有效。
1)首先安装gnustep-devel。可以通过sudo apt-get install gnustep
gnustep-devel安装,但是更好的解决办法是通过新立得软件包管理器安装,如果没有装新立得,在Ubuntu软件中心搜索“新立得软件包管理器”安装即可。
完成之后,打开新立得软件包管理器,搜索gnustep-
devel,右键标记以便安装,他会提示你要安装一些依赖包,确认即可。
2)安装完成之后,接下来是最关键的一步,也就是gnustep-make的环境变量的配置。与Windows不同,配置Ubuntu的环境变量是视你所用的shell不同而不同的。一般Ubuntu默认的shell是bash,那么就在用户主目录下的.bashrc文件配置。如果用的是其他的shell,比如zsh之类的,那么在.zshrc文件里面配置,以此类推。以下以bash为例。
如果在命令行模式下,输入ls -a,找到.bashrc,用vim或者其他的编辑器打开,在文件的最后加上如下几行:(#开头的一行为注释)
1 #set GNUstep
2 GNUSTEP_ROOT=/usr/share/GNUstep
3 export GNUSTEP_ROOT
4 source /usr/share/GNUstep/Makefiles/GNUstep.sh
如果不加上这几行的话,在编译Objective C的源代码的时候会提示/common.make,/tool.make找不到等情况。
3)在任意目录下,新建一个后缀名为.m的文件。*.m的文件是Objective C的源文件,*.mm是Objective
C++的源文件。我们以一个简单的helloworld程序为例。
1 vim hello.m
4)helloworld的源代码如下:
1 #import<Foundation/Foundation.h>
2
3 int main(int argc, char *argv[]){
4 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
5 NSLog(@"Hello World!");
6 [pool drain];
7 return 0;
8 }
5)在同一个目录下建立一个无后缀名的文件叫GNUmakefile,注意大小写。内容如下:
1 include $(GNUSTEP_MAKEFILES)/common.make
2
3 TOOL_NAME = hello
4 hello_OBJC_FILES = hello.m
5
6 include $(GNUSTEP_MAKEFILES)/tool.make
当然可以把hello换成你新建的项目的名称。其中hello.m是刚刚创建的源文件名。
6)命令行cd到刚刚的目录下,执行make即可。可以看到目录下多出了一个名为obj的目录,其中便有名为hello的执行文件。
1 cd obj
2 ./hello
若看到命令行正常输出Hello World!说明环境搭建成功。