本文源自本人的學(xué)習(xí)記錄整理與理解,其中參考閱讀了部分優(yōu)秀的博客和書籍,盡量以通俗簡單的語句轉(zhuǎn)述。引用到的地方如有遺漏或未能一一列舉原文出處還望見諒與指出,另文章內(nèi)容如有不妥之處還望指教,萬分感謝。
GNU是什么 ?
先看看官方解釋
GNU是一個(gè)自由軟件操作系統(tǒng)—就是說,它尊重其使用者的自由。GNU操作系統(tǒng)包括GNU軟件包(專門由GNU工程發(fā)布的程序)和由第三方發(fā)布的自由軟件。GNU的開發(fā)使你能夠使用電腦而無需安裝可能會侵害你自由的軟件。
從官方解釋可以看出,GNU是一個(gè)操作系統(tǒng),它由GNU軟件包和第三方自由軟件構(gòu)成。理查德 · 斯托曼 在 1983年發(fā)起GNU計(jì)劃,其目標(biāo)是建立完全自由的操作系統(tǒng)GNU,取代Unix。在1985年創(chuàng)建自由軟件基金會(FSF)。在1989年發(fā)布GPL許可協(xié)議保護(hù)和傳播由FSF發(fā)布的自由軟件。眾所周知,一個(gè)完整的通用操作系統(tǒng)至少需要內(nèi)核、編譯套件和sHeLL。它最初的內(nèi)核組件Hurd的開發(fā)工作開始于1990年,Hurd是以卡內(nèi)基梅隆大學(xué) 的微內(nèi)核Mach 3.0為的基礎(chǔ)的重要內(nèi)核組件,目的是在GNU系統(tǒng)中取代非自由的Unix內(nèi)核部分。Hurd的目標(biāo)是從功能、安全性和穩(wěn)定性上全面超越傳統(tǒng) Unix 內(nèi)核。由于目標(biāo)過于遠(yuǎn)大,該項(xiàng)目目前(9012年)仍處于開發(fā)測試階段,問題很多、無法穩(wěn)定運(yùn)行。斯托曼評價(jià)該項(xiàng)目說由于早期設(shè)計(jì)的太過于復(fù)雜,內(nèi)部通信及其繁瑣,開發(fā)和調(diào)試麻煩的很,而且參與該項(xiàng)目的人太少,導(dǎo)致項(xiàng)目進(jìn)展緩慢。1991年10月,林納斯·托瓦茲發(fā)布了他的玩具內(nèi)核源代碼(Freeminix-like kernel sources for 386-AT)。這是他在學(xué)習(xí)Minix操作系統(tǒng)源碼的過程中耗時(shí)六個(gè)月寫出來的POSIX不完整兼容的內(nèi)核,將GNU的基礎(chǔ)軟件Gcc和Bash成功的移植到了上面。這之后大量用戶參與開發(fā),并在1994年使用GPL協(xié)議發(fā)布了Linux 1.0內(nèi)核???Linux 的官方解釋
Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance.

從此,GNU計(jì)劃和Linux天衣無縫的、互相彌補(bǔ)的就結(jié)合在了一起,成為了完全自由并且完整的操作系統(tǒng)——GNU/Linux。RedHat等以GNU/Linux作為產(chǎn)業(yè)的大廠隨即出現(xiàn),大力發(fā)展了GNU/Linux,使其變得越來越實(shí)用,逐漸取代了Unix操作系統(tǒng)的位置。
GNUstep
- GNUstep 提供 GNUstep Make 來簡化編譯 Objective-C 程序· GNUstep Make 提供類似 Makefile 的功能, 稱為 GNUmakefile. 與 Makefile 相比比, GNUmakefile 簡單許多·
簡單來說, GNUstep 是實(shí)作 OpenStep 界面的開放軟體 (Open Source) 計(jì)劃, 目標(biāo)為提供跨平臺的物件導(dǎo)向程式開發(fā)環(huán)境。
綜合上述, GNUstep 實(shí)作 OpenStep 介面, 該介面已在商業(yè)市場上使用多年, 目前并演進(jìn)成 MacOS X 的 Cocoa 環(huán)境. GNUstep 包含四個(gè)主要部份, 統(tǒng)稱為核心 (Core):
那么重點(diǎn)來了,對于IOS開發(fā)中使用Objective-C語言的開發(fā)者來說:
- GNUstep將Cocoa的OC庫重新開源實(shí)現(xiàn)了一遍
- 雖然GNUstep不是蘋果官方源碼,但還是具有一定的參考價(jià)值 !!
- 由于Cocoa 框架中有很多代碼實(shí)現(xiàn)是不開源的,
開發(fā)者如果想了解底層實(shí)現(xiàn)沒有很好的辦法,現(xiàn)在GNUstep就可以輔助開發(fā)者了解其實(shí)現(xiàn)原理。
源碼地址:http://www.gnustep.org/resources/downloads.php
