Linux下C++的编程几个重要的工具和概念

来源:互联网 发布:安卓软件简单源码 编辑:程序博客网 时间:2024/05/22 04:41

C++是一个功能强大而又应用广泛的计算机语言,就应用领域而言,几乎无所不在,因为有操作系统的地方就会有C++的存在,热门程序而言,也就仅次于C和Java.而C与C++又有天然的血缘关系。如果是一个跨平台的项目,也就有必要到Linux下C++的编程有一个进行一个系统的学习和了解。本文主要记录在Linux平台下学习C++的一些总结和心得。希望与大家一起学习与成长!

在进行Linux下C++编程之前,先来了解几个重要的工具和概念:

GUN

在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)开头看到这个协议的声明,如:

/* * 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

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来进行编译。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃母乳不长体重怎么办 9个月宝宝不长牙怎么办 3个月宝宝过胖怎么办 宝宝长的很慢怎么办 想一个月瘦20斤怎么办 山药弄胳膊上痒怎么办 手碰山药很痒怎么办 手摸了山药很痒怎么办 手切了山药很痒怎么办 山药弄的身上痒怎么办 疣迪去除疣体怎么办 尖锐湿庞出血了怎么办 尿道口周围烂了怎么办 尖锐湿庞复发了怎么办 宝宝脸上长湿疹怎么办如何治疗 孕妇得尖锐湿庞怎么办 痘痘留下的小坑怎么办 花洒固定座坏了怎么办 脚上起水泡烂了怎么办 月经期吃了芒果怎么办 月经量少又黑怎么办 来月经黑色的血怎么办 月经来的是黑色怎么办 来月经有血块是怎么办 月经又少又黑怎么办 来月经发黑又少怎么办 月经血发黑量少怎么办 做人流后肚子胀怎么办 怀孕见红了肚子不痛怎么办 月经来是黑色的怎么办 怀孕了长了痔疮怎么办 怀孕了有外痔疮怎么办 孕妇长痔疮很痛怎么办 孕9个月尿路感染怎么办 旁边有人尿不出来怎么办 外阴破皮了应该怎么办 脸上长脂肪粒怎么办怎么能消除 挤黑头留下的坑怎么办 长痘留下的坑怎么办 鼻子上留下黑印怎么办 狗狗眼里长息肉怎么办