Linux下C++的编程——开偏介绍

C++是一个功能强大而又应用广泛的计算机语言,就应用领域而言,几乎无所不在,因为有操作系统的地方就会有C++的存在,热门程序而言,也就仅次于C和Java.而C与C++又有天然的血缘关系。

从事C++开发近两年,虽然开发的产品都是跨平台的,但个人直接接触到的编程工程还是更偏重于Windows平台(至少开发环境更多的是在Windows平台,还写过“带你玩转Visual Studio”系列的博文),而现在要自己独立地带领一个项目的开发,还是一个跨平台的项目,也就有必要到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 <[email protected]>
 *
 * 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.
 */

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++的编程——开偏介绍

下一篇要讲述的内容:

Linux下C++的编程——开发环境搭建与第一个程序

时间: 2024-12-11 15:00:34

Linux下C++的编程——开偏介绍的相关文章

Linux下C++的编程——开发环境搭建与第一个程序

上一篇文章Linux下C++的编程--开偏介绍中我们已经介绍了GUN.GCC.G++等一些重要的概念,现在应该开始动手实践了! 开发工具的安装 环境 Distributions版本:CentOS 6.7 Linux内核片:2.6.32-573.3.1.el6.i686 一般Linux安装完之后默认就已经安装了GCC(GNU Compiler Collection),你可以查看一下gcc和g++的版本号检查gcc和g++是否已经安装. [luowf@luoweifu ~]$ gcc -v gcc

Linux下C++的编程——GDB进行程序调试

GDB简介 我们在Linux下C++的编程--开偏介绍一文中已经简单介绍了GDB的功能,是类Unix系统的主要调试工具,可进行断点调试,跟踪程序,动态改变执行环境等功能. 从一个程序开始调试 下面我们就从一个程序开始讲解一下GDB的简单用法.假设我们有如下的程序: GDBTest1.cpp #include <iostream> int Accumulation(int n) { int result = 0; for(int i = 0; i < n; i ++) { result +

Linux下服务器端开发流程及相关工具介绍(C++)

原文:Linux下服务器端开发流程及相关工具介绍(C++) 去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路线图,帮助新人尽快上手. 本文介绍的是阿里妈妈搜索直通车这边的一些开发流程及相关工具.做为新人入门手册,其中某些工具可能只有直通车这边在用,但对于其他公司的新人来说,一样是具有指导意义的. 简单介绍一下直通车这边的开发背景:直通车业务对外是

Linux下的shell编程入门

通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者shell脚本来实现. 一.简介 Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂.Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令. 下面我们来看一个简单的shell程序: 1.首先建立一个

Linux 下IO端口编程访问

以前写的一篇笔记,偶尔翻出来了,放在这里做个纪念 Linux 下IO端口编程访问 这里记录的方法是在用户态访问IO端口,不涉及驱动程序的编写. 首先要包含头文件 /usr/include/asm/io.h ioperm() 在 unistd.h 中声明.用来打开对IO端口的访问权限,要求程序执行时必须有root 权限.只可以打开0x00到0x3ff 这一地址段的IO端口. ioperm( from, num, turn_on) 比如: #include<asm/io.h> #include&l

Linux下的C编程实战

Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux.RTLinux.ARM-Linux等等. 在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源.它包含TCP/IP协议栈.它易集成GUI. 鉴于Linux操作系统在服务器和嵌入式系统领

Linux下C基础编程----写在Blog之前的话

找个2个星期的实习吧.各种坎坷.既然公司只是做广告.为毛让我去笔试!严重鄙视.想在也想开了,争取过了,结果顺其自然吧.还是好好写自己的学习心得吧,希望和我以前一样迷茫的各位同学,少走一点弯路.好了,切入正题: 一.参考书籍: 好的书籍的作用不用多说了.先得有基础,推荐以下基本书吧,个人觉得不错. <C和指针> <C专家编程> <C陷阱与缺陷> 上面三本书,认真看吧,特别是C和指针,可以当教材看,认真做做书后习题,我从这本书中受益菲浅 ,后两本用于提高,比如可以知道: c

Linux 下的时间编程总结

在嵌入式编程中中,经常需要输出系统的当前时间.计算程序的执行时间.使用计时器等.最近也做了不少关于时间的操作,今天就认真总结一下,部分内容是在网上看到的.自己经过验证总结出来. 1.时间的类型 1.格林威治标准时间 coordinated universal time(UTC)是世界标准时间,即常说的格林威治标准时间(greenwich mean time,GMT). 2.日历时间 日历时间(calendar time)是用"一个标准时间点(如1970年1月1日0点)到此时经过的秒数"

LINUX下C语言编程基础

实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人