每周一荐:Objective-C的开源开发环境GNUstep

作  者:david++
发布时间:2012/08/16 22:45

Objective-C近几年变得越来流行,TIOBE世界编程语言排行榜中Objective-C的排名不断上升,同时也反应出Apple平台的开发受到越来越多的人关注。Objective-C语言作为Apple世界的官方语言,无论是MAC开发还是iOS开发,甚至系统层的编写它都能够胜任。融合了C和Smalltalk的面向对象特性,Objective-C变得简单、高效(比起C++等面向对象语言)。一般情况下,要想玩玩Objective-C,可以购买一台MAC电脑+免费的Xcode,就拥有了一整套Objective-C的开发环境,就可以为你的iPhone、iPad、iTouch、Mac机编写应用了。Apple的东西,做工精细的同时也价格不菲,难怪有人说:“单反毁三代,苹果毁一生”。本文要给大家推荐一个开源的Objective-C开发环境——GNUstep,从此以后你既可以在Linux平台上玩ObjC,也可以在Windows平台上玩ObjC了。

1. 一点历史

简单来说,GNUstep 是使用OpenStep 界面的开源(Open Source) 计划,目的为提供跨平台的面向对象的开发环境。

早在1985 年,Steve Jobs 离开苹果电脑(Apple) 后成立了NeXT 公司,并于1988 年推出了NeXT 电脑,使用NeXTStep 为操作系统。在当时,NeXTStep 是相当先进的系统。 以Unix (BSD) 为基础,使用PostScript 提供高品质的图形界面,并以Objective-C 语言提供完整的面向对象环境。

尽管NeXT 在软件上的优异,其硬体销售成绩不佳,不久之后,NeXT 便转型为软件公司。1994 年,NeXT 与Sun(Sun Microsystem) 合作推出OpenStep 界面,目标为跨平台的面向对象程式开发环境。NeXT 接着推出使用OpenStep 界面的OPENSTEP 系统,可在Mach, Microsoft Windows NT, Sun Solaris 及HP/UX 上执行。1996 年,苹果电脑买下NeXT,做为苹果电脑下一代操作系统的基础。 OPENSTEP 系统便演进成为MacOS X 的Cocoa 环境。

在1995 年,自由软体基金会(Free Software Fundation) 开始了GNUstep 计划,目的在使用OpenStep 界面,以提供Linux/BSD 系统一个完整的程式发展环境。但由于OpenStep 介面过于庞大,开发人力不足,及许多技术在当时尚未成熟(如Display PostScript),所以直到目前为止,GNUstep 才算是一个完整的编程开发环境。

尽管OpenStep 早在1994 年便提出,其界面及架构在现今仍相当先进及实用,使得开发GNUstep 程序相当容易。

2. 简介

GNUstep 使用Objective-C 语言,是C 语言加上SmallTalk 的面向对象的功能。结合两者的优点,又不至于像C++复杂。

GNUstep 提供两个主要的程序库,Foundation 及AppKit。Foundation 处理非图形介面的部份。如字串, 档案, 网路, 基本资料结构, 多行绪等, 又称之为GNUstep Base。AppKit 则处理图形介面的部份, 包含视窗, 使用者界面等, 又称之为GNUstep GUI。

由于GNUstep 具有跨平台的特性,有关绘图及字型的部份,则交由GNUstep Back 来处理。使用者可依所使用的操作系统,选择适当的后端处理(Backend)。 GNUstep GUI 会自行处理与Back 相关的功能,程式开发者只要使用GUI 程式库,便可适用于各种后端上, 完全不用考虑平台问题。

3. Linux下安装GNUstep

在此仅介绍一下Ubuntu下面的安装,其它安装方法,参考GNUStep官方文档:http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_toc.html

Step1:让gcc支持objective-C的编译

$apt-get install gobjc
$gcc -x objective-c hello.m -o hello
hello.m 随便写几个c函数,编译通过就OK了。例如:
int main(int argc, const char* argv[])
 {
 printf("Hello Objective-C!");
 return 0;
 }

Step2:安装GNUstep

$apt-get install gnustep
$apt-get install gnustep-devel
$apt-get install libgnustep-base-dev

Step3:配置GNUSTEP_MAKEFILES和执行GNUstep.sh,自动加载其它环境路径

$chmod +x /usr/share/GNUstep/Makefiles/GNUstep.sh
$export GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles
$source /usr/share/GNUstep/Makefiles/GNUstep.sh

也可以把后面两条放在.bashrc或.bash_profile中,这样就不用每次登陆或者新开终端都敲一遍了。

Step4:编译一个简单的hello程序,测试下看GNUstep安装的是否OK

hello.m内容如下:

#import <Foundation/Foundation.h>
int main(int argc, const char* argv[])
 {
 NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
 NSLog(@"Hello GNUstep!!\n");
 [pool release];
 return 0;
 }

编译一下:

$gcc -Wall -g -o hello hello.m -I/usr/include/GNUstep/ -fconstant-string-class=NSConstantString  -lobjc -lgnustep-base
$./hello
2012-08-16 17:54:08.315 hello[12915] Hello GNUstep!!

编译没有出错,运行hello看到”Hello….”,恭喜你!GNUstep安装成功!

4. Windows下安装GNUstep

Windows下安装GNUstep是比较简单了,直接在此下载安装包:http://www.gnustep.org/experience/Windows.html,内置了MSYS系统。直接从菜单“开始”->”所有程序” -> “GNUstep” -> “shell”, 创建Objective-C文件hello.m(内容同上),用如下命令编译:

$ gcc -o hello hello.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries/ -fconstant-string-class=NSConstantString -lobjc -lgnustep-base

5. 参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
簡單來說, GNUstep 是實作 OpenStep 介面的開放軟體 (Open Source) 計劃, 目標為提供跨平台的物件導向程式開發環境. 早在 1985 年, Steve Jobs 離開蘋果電腦 (Apple) 後成立了 NeXT 公司, 並於 1988 年推出了 NeXT 電腦, 使用 NeXTStep 為作業系統. 在當時, NeXTStep 是相當先進的系統. 以 Unix (BSD) 為基礎, 使用 PostScript 提供高品質的使用者圖形介面, 並以 Objective-C 語言提供完整的物件導向環境. 儘管 NeXT 在軟體上的優異, 其硬體銷售成績不佳, 不久之後, NeXT 便轉型為軟體公司. 1994 年, NeXT 與昇陽 (Sun Microsystem) 合作推出 OpenStep 介面, 目標為跨平台的物件導向程式開發環境. NeXT 接著推出實作 OpenStep 介面的 OPENSTEP 系統, 可在 Mach, Microsoft Windows NT, Sun Solaris 及 HP/UX 上執行. 1996 年, 蘋果電腦買下 NeXT, 做為蘋果電腦下一代作業系統的基礎, OPENSTEP 系統便演進成為 MacOS X 的 Cocoa 環境. 在 1995 年, 自由軟體基金會 (Free Software Fundation) 開始了 GNUstep 計劃, 目的在實作 OpenStep 介面, 以提供 Linux/BSD 系統一個完整的程式發展環境. 但由於 OpenStep 介面過於龐大, 開發人力不足, 及許多技術在當時尚未成熟 (如 Display PostScript), 所以直到目前為止, GNUstep 才算是一個完整的程式開發環境. 儘管 OpenStep 早在 1994 年便提出, 其介面及架構在現今仍相當先進及實用, 使得開發 GNUstep 程式相當容易. GNUstep 使用 Objective-C 語言, 是 C 語言加上 SmallTalk 的物件導向的功能. 結合兩者的優點, 又不至於像 C++ 如此複雜. GNUstep 提供兩個主要的程式庫, Foundation 及 AppKit. Foundation 處理非圖形介面的部份, 如字串, 檔案, 網路, 基本資料結構, 多行緒等, 又稱之為 GNUstep Base. AppKit 則處理圖形介面的部份, 包含視窗, 使用者介面等, 又稱之為 GNUstep GUI. 由於 GNUstep 具有跨平台的特性, 有關繪圖及字型的部份, 則交由 GNUstep Back 來處理. 使用者可依所使用的作業系統, 選擇適當的後端處理 (Backend). GNUstep GUI 會自行處理與 Back 相關的功能, 程式開發者只要使用 GUI 程式庫, 便可適用於各種後端上, 完全不用考慮平台問題. 目前 GNU GCC 3.x 支援 Objective-C 語言, GNUstep 則提供 GNUstep Make 來簡化編譯 Objective-C 程式. GNUstep Make 提供類似 Makefile 的功能, 稱為 GNUmakefile. 與 Makefile 相比較之下 GNUmakefile 簡單許多.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值