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

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

sudo yum install -y make

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

sudo yum install -y gcc gcc-objc

3、安装依赖库:

sudo yum install -y libobjc libjpeg libjpeg-devel libpng libpng-devel libtiff libtiff-devel libxml2 libxml2-devel libX11-devel libXt-devel libxslt libxslt-devel libicu libicu-devel gnutls gnutls-devel

4、下载GNUstep Startup

curl -L -O http://ftpmain.gnustep.org/pub/gnustep/core/gnustep-startup-0.32.0.tar.gz

5、解压GNUstep Startup

tar vxf gnustep-startup-0.32.0.tar.gz

6、进入GNUstep Startup解压后的目录:

cd gnustep-startup-0.32.0

7、生成Makefile文件

./configure

8、使用GNU make编译并安装:(GNUstep把安装过程合并到这个步骤了,所以不用再make install了)

echo -e "\n" | make

如果得到下面的提示,表示安装成功:

安装目录是/usr/GNUstep/

9、在/etc/profile中配置/usr/GNUstep/System/Library/Makefiles/GNUstep.shbash启动时候加载:

. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

10、在/etc/profile中加入LD_LIBRARY_PATH环境变量的配置:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/GNUstep/System/Library/Libraries/

11、在/etc/profile中加入PATH环境变量的配置:

export PATH=$PATH:/usr/GNUstep/System/Tools
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 -L /usr/GNUstep/System/Library/Libraries -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 -L /usr/GNUstep/System/Library/Libraries -lobjc -lgnustep-base -I /usr/lib/gcc/x86_64-linux-gnu/5/include/
1.5、使用make进行编译

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

GNUSTEP_MAKEFILES = /usr/GNUstep/System/Library/Makefiles

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = HelloOC
HelloOC_OBJC_FILES = HelloOC.m

include $(GNUSTEP_MAKEFILES)/tool.make

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

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

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

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

2、使用make命令进行编译:

make

3、运行效果如下:

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

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

5、运行效果如下:

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

1.6、总结

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

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