第20章Linux编程C是Linux下最常用的编程语言,Linux本身就是用C写成的。C++也经常会被用到,这是目前业界最重量级的语言。本章的目的并不是要教会读者编写C和C++程序(这也本不可能),而是要告诉C和C++程序员如何在Linux平台下工作。本章主要介绍Linux下的编辑器、编译器和调试器,最后以版本控制系统Subversion结束本章。编写Linux的黑客们让这些工具变得最适合程序员的口味,尽管最初使用起来可能会不习惯。20.1编辑器的选择尽管Vim和Emacs对于Linux初学者而言简直是两个梦魇,但仍然建议读者学会其中的一个。这两个工具的功能非常完善和强大,程序员还可以方便地对其进行扩充以设置以满足自己的需求。也许在刚上手的时候读者会对它们感到厌烦,但在真正成为一个Vim或者Emacs的高级用户后,没有人会打算放弃它们。如果读者没有时间学习这两个工具的话,那么Linux的图形化编辑器也可以提供很好的功能。总之,不必担心在Linux下如何写程序,编辑器不会为难大家。20.1.1Vim编辑器1.编辑和保存文件2.搜索字符串3.替换字符串4.针对程序员的配置5.Vim的常用命令20.1.2Emacs编辑器1.编辑和保存文件2.移动光标3.删除和粘贴20.1.3图形化的编程工具gedit图形化编程工具20.2C和C++的编译器:gcc其实这个标题并不贴切。gcc在开发初期的确是定位在一款C编译器,从其名字就可以推测出来:GNUCCompiler。然而经过十多年的发展,gcc的含义已经悄然改变,成为GNUCompilerCollection,同时支持C、C++、ObjectiveC、Chill、Fortran和Java等语言。本节以几个实例介绍gcc编译器的用法。作为自由软件的旗舰项目,gcc的功能是如此强大,这里无法列举其每一个选项,有需要的读者可以参考GNUgcc手册。20.2.1编译第一个C程序gcc命令20.2.2同编译有关的选项20.2.3优化选项20.2.4编译C++程序:g++使用g++命令20.3调试:gdbgdb是GNU发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。相比较图形化的IDE调试器,gdb在某些细节上展现出令人称羡的灵活性。gdb确实拥有图形化调试器所不具备的强大特性,这会随着使用的深入逐步体现出来。本节以一个简单的实例开头,最后给出gdb常用的命令表。更详细的命令选项可以参考gdb手册。20.3.1启动gdbgcc-g命令20.3.2获得帮助help命令20.3.3查看源代码1.list命令2.search20.3.4设置断点1.break命令2.clear命令20.3.5运行程序和单步执行1.run命令2.next命令3.continue命令20.3.6监视变量1.print命令2.watch命令20.3.7临时修改变量setvar命令20.3.8查看堆栈情况bt命令20.3.9退出gdbquit命令20.3.10命令汇总20.4与他人协作:版本控制系统生活中难免会出错,而保证所作的改动能够正确撤销非常重要。在大型软件开发中,沟通不畅很有可能导致团队成员实施了彼此矛盾的修改。如果源代码只是简单地处在一个目录中,那么事情将变得一团糟。幸运的是,本节介绍的版本控制可以有效地解决这些问题。在正式开始之前,首先看一下版本控制系统到底能做些什么。20.4.1什么是版本控制版本控制概述20.4.2安装Subversion1.下载Subversion软件2.检查Subversion的管理工具是否正确安装了。20.4.3建立项目仓库建立项目仓库。20.4.4创建项目并导入源代码svnimport命令20.4.5开始项目开发20.4.6修改代码和提交改动20.4.7解决冲突20.4.8撤销改动svnmerge命令20.4.9命令汇总