网络上关于FreeBSD下用GNUstep编写Objective-C程序的文章很少,可能是用FreeBSD系统的人不多吧。我要写一些这方面的文章,记录一下,方便大家。
系统环境:VirtualBox下的FreeBSD 13.1-RELEASE,64位,EFI启动+GPT分区表,shell为sh
1. 安装GNUstep
在命令行输入pkg install gnustep(建议使用ustc源,比较快),会显示出一些依赖包,输入Y确定安装即可。
2. 配置环境
在FreeBSD下,GNUstep的安装目录为/usr/local/GNUstep,配置比较简单。Shell脚本/usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh设置了GNUstep的环境变量(对于csh可能是GNUstep.csh,但本文不讲解csh环境下的配置,以下内容仅针对sh shell环境),因此我们只需要每次登录时都执行一下GNUstep.sh就可以了。如果我们想让当前用户使用GNUstep,就要在当前用户家目录下的.profile文件中添加:
. /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh
如果我们想让所有用户使用GNUstep,就在/etc/profile中添加上述语句。
无论在哪里添加,都不要漏了最前面的点。
重启系统后,配置生效。
3. 编写Hello world程序
在当前用户家目录创建objc/helloworld目录,在helloworld目录下创建文件helloworld.m,写入:
#import <Foundation/Foundation.h>
int main(int argc, char* argv[]){
NSLog(@"Hello world!\n");
return 0;
}
4. 编写Makefile
在helloworld目录下创建文件GNUmakefile,写入:
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = Helloworld
Helloworld_OBJC_FILES = helloworld.m
include $(GNUSTEP_MAKEFILES)/tool.make
此处TOOL_NAME是要生成的程序的名称。
5. 编译
在helloworld目录下输入gmake即可。如果没有安装gmake,可用pkg install gmake安装。
6. 运行
编译完成后,helloworld目录下会生成obj目录。进入obj目录,输入./Helloworld即可运行。运行结果如下:
2024年6月8日更新:在FreeBSD 14中,使用pkg安装GNUstep可以安装Objective-C 2.0。没想到在FreeBSD上安装Objective-C 2.0如此简单。