前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GUN 意思

GUN 意思

作者头像
bear_fish
发布2018-09-19 14:02:50
3.1K0
发布2018-09-19 14:02:50
举报
文章被收录于专栏:用户2442861的专栏

http://blog.csdn.net/luoweifu/article/details/50153461

在Linux下进行编程,GNU是你永远绕不开的一个概念,因为你处处都可以看到它,那它是一个什么东西呢? 

GNU是GNU’s Not Unix的缩写,意思是GNU并不是Unix。那它是什么呢?其实它有多个含义:

GUN项目

1984年,史托曼(Richard Stallman)开始GNU项目,这个项目的目的是创建一个自由、开放的UNIX操作系统(Free Unix)。但是建立一个操作系统谈何容易啊!而且在当时的 GNU 是仅有史托曼一个人单打独斗的,这实在太麻烦,但又不能放弃这个计划。于是史托曼反其道而行之:“既然操作系统太复杂, 我就先写可以在 Unix 上面运行的小程序,这总可以了吧?”基于这个想法, 史托曼便开始参考Unix上的现有软件,并依据这些软件的作用开发出具有相同功能的软件,并将其开源。后来越来越多的人知道免费好用的GUN软件,并且与付费的专利的性能差不了多少,使用GUN软件的人就越来多,GNU项目也逐步打开知名度。

为了这个计划,他开始使用原本Unix上面跑的软件,并自行撰写功能与Unix原有专利软件相仿的软件。但不论是什么软件,都得要进行编译成为二进制档案(binary file)后才能够执行,因此他便开始撰写C语言的编译器,那就是现在相当有名的GNU C(gcc)!这个点相当的重要!这是因为C语言编译器版本众多,但都是专利软件,如果他写的C编译器够棒,效能够佳,那么将会大大的让GNU计划出现在众人眼前!

GUN自由软件协议

GPL协议指的是通用公共许可证(General Public License, GPL)。由于GNU项目开发的软件都是开放源代码的自由软件,这就有可能被他人盗用并对它进行注册而成为专利软件。为解决这个问题,1985年史托曼与律师草拟了有名的通用公共许可协议,你可以在GNU软件源码的每一个文件(如.h、.cpp)开头看到这个协议的声明,如:

代码语言:text
复制
/*
 * Copyright (C) 2004-2010 Geometer Plus <contact@geometerplus.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA.
 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

GPL协议的详细内容见http://www.gnu.org/licenses/gpl-3.0.en.html 关于GPL协议的几点说明如下:  你可以——  取得软件源码:你可以根据自己的需求执行GPL协议的自由软件;  复制:你可以自由复制该软件;  修改:你可以将取得的源码进行程序的修改,使之适合自己的工作;  再发行:你可以将你修改过的程序再度自由发行,而不会与原有的编写者冲突;  回馈:你可以你修改过的程序回馈于社会!  你不能——  修改授权:你不能将一个GPL授权的自由软件在你修改后将它取消GPL授权;  单纯销售:你不能单纯销售自由软件;

GUN开发的自由软件

前面说到史托曼开始GNU项目进行开发大量的自由软件,随着这些软件的成功开发和广泛使用,GNU的熟知度也越来越广。现在被广泛使用的知名的自由软件有:  Emacs  GCC(GNU Compiler Collection C程序编译器)、G++(C++编译器)  GUN C Library(GLIBC)  Bash Shell

GCC与G++

首先GCC是the GNU Compiler Collection的意思,是GNU的一个编译器集合,里面包含了多种编译器及相关工具,如gcc、g++。GCC是多种主要编程语言编译器的整合(或叫集成)发布。这些编程语言目前包含C, C++, Objective-C, Objective-C++, Java, Fortran和Ada。参见Using the GNU Compiler Collection

gcc是GNU的C编译器(GNU C Compiler),是GNU Compiler Collection的一部分;  g++是GNU的C++编译器(GNU C++ Compiler),也是GNU Compiler Collection的一部分;

GDB

GDB是GNU Project的一个调试程序(GNU Debugger), 允许你查看一个程序执行时内部的具体执行逻辑,或当它崩溃时这个程序执行了什么。  GDB可以做四个主要的事情(及它所支持的其它功能)以帮助你发现程序的bug:  1. 开始一个程序,指定任何可能影响它行为的事情;  2. 让你的程序以指定的条件暂停;  3. 当程序停止时检查发生了什么;  4. 改变你程序中的变量或数据,以便你试验导致你程序bug的影响因素,并了解更多其它的信息。

GDB可以调试以下编程语言编写的程序:Ada、C、C++、Objective-C、Pascal等,这些程序可能执行在相同的机器上(本地调试),也可能执行在不同的机器中(远程调试),GDB可以运行在最爱欢迎的Unix和Microsoft Windows上。  参考阅读:The GNU Project Debugger

Makefile

Makefile是程序编译的规则,makefile记录着整个工程的编译规则(如源文件的编译顺序、依赖关系等),通过make工具进行编译。make根据makefile定义的规则将源代码编译成二进行文件。在跨平台(特别是类Unix系统中)的程序中,一般都会通过makefile来进行编译

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年11月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GUN项目
  • GUN自由软件协议
  • GUN开发的自由软件
  • GCC与G++
  • GDB
  • Makefile
相关产品与服务
远程调试
远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档