每周一薦: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. 參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM