您的位置:首页 > 运维架构 > Linux

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

2017-10-05 17:05 471 查看
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来进行编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux c++ 编程 环境
相关文章推荐