在Ubuntu上使用GNUstep开发Objective-C程序
1.0、参考
1.1、搭建GNUstep开发环境

1、安装gmake工程化的构建工具:

sudo apt-get install -y make

2、安装GNU Objective-C编译器:

sudo apt-get install -y gobjc

3、安装gnustep

sudo apt-get install -y gnustep

4、安装gnustep-devel

sudo apt-get install -y gnustep-devel

安装目录是/usr/share/GNUstep/

安装完成后,有两个命令可以使用:/usr/bin/gnustep-config/usr/bin/gnustep-tests

5、设置GNUstep环境:

sudo bash /usr/share/GNUstep/Makefiles/GNUstep.sh

每次打开Terminal都必须重新执行一次,所以, 您可以把这句命令放到.bashrc中,让bash启动的使用自动执行它。

1.2、编写Objective-C源代码

创建一个文件夹HelloOC用于存放源代码:

mkdir HelloOC && cd HelloOC

创建一个叫做HelloOC.m的文本文件,内容如下:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello Objective-C");

    [pool drain];

    return 0;
}
1.3、使用gcc进行编译

GCC编译器是老牌的编译器,它支持Objective-C 1.0的语法。

使用GCC编译的命令如下:

gcc `gnustep-config --objc-flags` -o HelloOC HelloOC.m -lobjc -lgnustep-base
1.4、使用clang进行编译

Xcode里面最早使用的编译器是GCC, 后来,苹果开发了LLVM,逐步替代了GCC

LLVM编译器的前端可以是GCC,也可以是Clang

Objective-C 2.0增加了一些重要的功能,所以,我们一般都会使用这些功能。为了使用这些功能,我们必须使用Clang进行编译。因为GCC不支持Objective-C 2.0的语法。

使用Clang编译的命令如下:

clang `gnustep-config --objc-flags` -o HelloOC HelloOC.m -lobjc -lgnustep-base -I /usr/lib/gcc/x86_64-linux-gnu/5/include/
1.5、使用make进行编译

1、在HelloOC.m同一个目录下,创建一个叫做GNUmakefile的文本文件,内容如下:

GNUSTEP_MAKEFILES = /usr/share/GNUstep/Makefiles

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = HelloOC
HelloOC_OBJC_FILES = HelloOC.m

include $(GNUSTEP_MAKEFILES)/tool.make

注意:文件名一定是GNUmakefile,注意大小写!

Linux C开发经验的同学应该对这个GNUmakefile不陌生, 它是gmake这个自动化工具的配置文件。gmake其实与早期Java开发中的AntAndroid开发中的gradleJava EE开发中的Maven这些工具是一样的, 他们都是自动化工具,只是,这些工具通常是用来构建项目,所以,被称为项目构建工具。

使用项目构建工具有很多好处:配置文件可与源代码一起被版本控制工具管理, 编译的时候只需要一个make命令就编译好了,并非常简单,这对于大型项目非常有用。

现在,我们的工程结构如下:

2、下面使用gmake命令进行编译:

make

3、运行效果如下:

4、编译完成后,我们再看一下工程的目录结构:

生成的可执行文件在obj目录下。

5、运行效果如下:

与在Xcode中运行效果是一样的。

1.6、总结

上面我们分别用GCCClanggmake进行编译项目,这是常见的编译方式。

至此,您就可以在Ubuntu下享受Objective-C开发之旅了,好好发挥您的想象吧!