本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。
GNU是什么 ?
先看看官方解释
GNU是一个自由软件操作系统—就是说,它尊重其使用者的自由。GNU操作系统包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的自由软件。GNU的开发使你能够使用电脑而无需安装可能会侵害你自由的软件。
从官方解释可以看出,GNU是一个操作系统,它由GNU软件包和第三方自由软件构成。理查德 · 斯托曼 在 1983年发起GNU计划,其目标是建立完全自由的操作系统GNU,取代Unix。在1985年创建自由软件基金会(FSF)。在1989年发布GPL许可协议保护和传播由FSF发布的自由软件。众所周知,一个完整的通用操作系统至少需要内核、编译套件和sHeLL。它最初的内核组件Hurd的开发工作开始于1990年,Hurd是以卡内基梅隆大学 的微内核Mach 3.0为的基础的重要内核组件,目的是在GNU系统中取代非自由的Unix内核部分。Hurd的目标是从功能、安全性和稳定性上全面超越传统 Unix 内核。由于目标过于远大,该项目目前(9012年)仍处于开发测试阶段,问题很多、无法稳定运行。斯托曼评价该项目说由于早期设计的太过于复杂,内部通信及其繁琐,开发和调试麻烦的很,而且参与该项目的人太少,导致项目进展缓慢。1991年10月,林纳斯·托瓦兹发布了他的玩具内核源代码(Freeminix-like kernel sources for 386-AT)。这是他在学习Minix操作系统源码的过程中耗时六个月写出来的POSIX不完整兼容的内核,将GNU的基础软件Gcc和Bash成功的移植到了上面。这之后大量用户参与开发,并在1994年使用GPL协议发布了Linux 1.0内核。看 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计划和Linux天衣无缝的、互相弥补的就结合在了一起,成为了完全自由并且完整的操作系统——GNU/Linux。RedHat等以GNU/Linux作为产业的大厂随即出现,大力发展了GNU/Linux,使其变得越来越实用,逐渐取代了Unix操作系统的位置。
GNUstep
- GNUstep 提供 GNUstep Make 来简化编译 Objective-C 程序· GNUstep Make 提供类似 Makefile 的功能, 称为 GNUmakefile. 与 Makefile 相比比, GNUmakefile 简单许多·
简单来说, GNUstep 是实作 OpenStep 界面的开放软体 (Open Source) 计划, 目标为提供跨平台的物件导向程式开发环境。
综合上述, GNUstep 实作 OpenStep 介面, 该介面已在商业市场上使用多年, 目前并演进成 MacOS X 的 Cocoa 环境. GNUstep 包含四个主要部份, 统称为核心 (Core):
那么重点来了,对于IOS开发中使用Objective-C语言的开发者来说:
- GNUstep将Cocoa的OC库重新开源实现了一遍
- 虽然GNUstep不是苹果官方源码,但还是具有一定的参考价值 !!
- 由于Cocoa 框架中有很多代码实现是不开源的,
开发者如果想了解底层实现没有很好的办法,现在GNUstep就可以辅助开发者了解其实现原理
。
源码地址:http://www.gnustep.org/resources/downloads.php