Ubuntu安装GNUstep (Objective-C 2.0)

GNUstep是Objective C库和框架的开源实现,它使得我们可以在Linux系统上使用Objective C。Objective C有1.0和2.0版本,在Ubuntu上如果直接用apt-get安装gnustep组件,安装的会是1.0版本,会造成autoreleasepool等2.0版本的功能无法使用,给开发造成很大的不便。要想使用2.0版本,就必须下载源码,编译安装。这篇文章记录了在Ubuntu系统上安装支持Objective-C 2.0版本的GNUstep的过程。

系统环境:Ubuntu 20.04 x86_64

1. 卸载所有原有的gnustep组件。如果之前的环境是用apt-get安装的,就要用apt-get卸载掉,确保系统中没有gnustep*和libgnustep*的软件包。(这一步参考:objective-c如何在linux下进入Modern模式_clang gnustep-CSDN博客,但clang和llvm可以不卸载)

2. 如果没有安装clang和llvm,可使用apt命令安装:

sudo apt install clang
sudo apt install llvm

3. 安装软件包:

sudo apt install cmake
sudo apt install libffi-dev libicu-dev libgnutls28-dev libxml2-dev
sudo apt install libpthread-workqueue-dev libblocksruntime-dev libkqueue-dev libfreetype6-dev
sudo apt install libjpeg-dev libcups2-dev libpng-dev libfreetype-dev
sudo apt install libxt-dev libcairo2-dev libgl1-mesa-dev

4. 从github下载所需源码(要到Release中下载,确保版本正确)

robin-map-1.2.2: Release v1.2.2 · Tessil/robin-map · GitHub

libobjc2-2.2.1: Release GNUstep Objective-C Runtime 2.2.1 · gnustep/libobjc2 · GitHub

gnustep-base-1.29.0: https://github.com/gnustep/libs-base/releases/tag/base-1_29_0

gnustep-make-2.9.1: Release make-2_9_1 · gnustep/tools-make · GitHub

gnustep-gui-0.30.0: https://github.com/gnustep/libs-gui/releases/tag/gui-0_30_0

5. 安装robin-map

解压后进入目录,执行:

mkdir build
cd build
cmake ..
make
sudo make install

6. 安装libobjc2

安装方法同上。

7. 依次安装gnustep-make,gnustep-base和gnustep-gui,都是configure->make->sudo make install三部曲。

中间如果报找不到libgnustep-base.so.1.29,就添加软链接:

sudo ln -s /usr/local/lib/libgnustep-base-so.1.29 /usr/lib

添加完成后,把刚才报错的指令重新执行一次,就应该能通过了。通过这一步后继续安装,直到完成。

8. 在~/.profile中添加:

. /usr/local/share/GNUstep/Makefiles/GNUstep.sh

9. 使配置文件生效

source ~/.profile

环境配置完成,最好重启一下,再写项目。

测试项目:helloworld

GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = helloworld
helloworld_OBJC_FILES = helloworld.m
OBJC_ADDITIONAL_FLAGS = -fobjc-exceptions -fobjc-nonfragile-abi -ldispatch

include $(GNUSTEP_MAKEFILES)/tool.make

helloworld.m:

#import <Foundation/Foundation.h>

int main(int argc, const char* argv[]) {
	@autoreleasepool {
		NSLog(@"Hello world!\n");
	}
	return 0;
}

这个项目可以编译运行,说明Objective-C 2.0环境配置成功。

补充:我们还可以通过检测__OBJC2__宏的方式检测Objective-C版本:

GNUmakefile:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = objc_version_detect
objc_version_detect_OBJC_FILES = objc_version_detect.m
OBJC_ADDITIONAL_FLAGS = -fobjc-nonfragile-abi -fobjc-arc

include $(GNUSTEP_MAKEFILES)/tool.make

objc_version_detect.m:

#import <Foundation/Foundation.h>

int main(int argc, const char* argv[]) {
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	double objcVer = -1;
	#ifdef __OBJC2__
	objcVer = 2;
	#elif defined(__OBJC__)
	objcVer = 1;
	#else
	objcVer = 0;
	#endif
	NSLog(@"The Objective-C version is %2.1f\n", objcVer);
	[pool release];
	return 0;
}

编译运行,显示"The Objective-C version is 2.0",说明配置成功。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在Windows系统上,也是可以编写Objective-C程序的。你可以使用GNUStep开源项目来编译简单的Objective-C程序。GNUStep是一个开源的项目,提供了一套兼容Objective-C的开发环境。通过GNUStep,你可以在Windows系统上使用Objective-C语言进行编码。这对于暂时没有Mac电脑但想要入门Objective-C的人来说是一个不错的选择。同时,苹果也为我们提供了Xcode集成开发环境(IDE),在Xcode中我们可以方便地进行Objective-C程序的编写和调试。所以,虽然Objective-C最初是苹果软件的编程语言,但在Windows系统上也有方法搭建Objective-C的集成开发环境。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [在 windows 环境下编译 Objective-C 程序](https://blog.csdn.net/light_bo/article/details/45770557)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Windows下的Objective-C集成开发环境(IDE)](https://blog.csdn.net/ldl22847/article/details/7482971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qifeng_xiaozi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值