第2章 Linux程序设计基础——C环境
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
捕捉到另一条警告信息,这是因为main()函数 被声明为返回一个整型,但实际上返回值未被定义。 因此可作如下修改:
#include<stdio.h>
#include<stdlib.h> void main() { printf(―Hello World!\n‖); return EXIT_SUCCESS; } /* for EXIT_SUCCESS */
备的相关文档;
第5部分:系统的不同文件格式; 第6部分:因历史原因而包含的游戏相关文档;
第7部分:有关语言或小语言的文档;
第8部分:守护程序或者其他系统管理员命令的相关文档。
可以在shell提示下键入man和命令的名称,来 阅读有关的说明书页。例如,要阅读关于ls命令的 说明书页,键入以下命令即可: 例:#man ls
2.3 gcc编译器的使用
2.3.1 使用gcc编译程序
gcc是GNU项目的编译器套件,能够编译用C、C++和 Objective C编写的程序。
gcc的软件包如下:
cpp g++ C预处理器 C++编译器
gcc
gccbug libgcc*
C编译器
创建bug报告的shell脚本 Gcc的优先库
libstdc++
u 恢复修改及恢复删除操作
7、复制和粘贴的操作
其实删除也带有剪切的意思,当删除文字后, 按下shift+p键就把内容贴在原处,然后移动光标到 某处,再按p或shift+p就能贴上了。
p 在光标之后粘贴 shift+p 在光标之前粘贴
8、查找
首先进入命令模式,再输入/或?就可以使用查 找功能了。
/要查找的单词 正向查找,按n键把光标移动到下一个符合条件的 地方 ?要查找的单词 反向查找,按shift+n键把光标移动到下一个符合 条件的地方才
libsupc++
标准C++库,包含多常用的函数
提供支持C++语言的函数库
gcc作为一个交叉平台编译器,能够在当前 CPU平台上为不同体系结构的硬件系统开发软件。 Gcc对C和C++作了大量扩展,这些扩展大部分能 够提高程序执行效率,有助于编译器进行代码优化。 gcc的基本用法:
gcc [options] [filenames]
2.1.3 基于文本模式的开发平台
1)编辑工具
vi、emacs等,编辑程序与编译工作是分开的。 2)编译工具 C、C++、Java、Pascal、Fortran、COBOL 等编译工具。在使用这些编译工具时,是使用命令 行方式的。 3)调试工具 gdb,可以查看程序运行中某一变量值,支持 断点调试等功能。
2.1.2 开发工具环境
Windows一直以最友好的界面展示给程序员, 但却严格限制程序员对其透彻研究,将自己用华丽 的外表包装起来。而Linux则一直以真正面目示人, 比较原始、古朴和原汁原味。 一套完整的开发工具至少包括编辑工具、编译 工具、调试工具,如果是大型项目,还要有配置工 具和项目管理工具。Linux的开发环境大体上分为 基于文本的开发平台(典型组合是vim/emacs+ gcc+gdb)和集成开发平台(Eclipse+CDT插 件)。
注意:gcc在得到一条警告信息后,仍然继续编译完程 序,只有在遇到错误时才停止编译。 我们改正上述警告如下:
#include<stdio.h>
int main()
{ printf(―Hello World!\n‖); }
再来编译它:
$ gcc –Wall –o test –c test.c test.c:5:warning: control reaches of non-void function
2、VIM的启动保存和退出
1)在命令行中指定打开文件。如vim test.txt,此时 VIM处于一般模式,也是其默认模式。
2)先进入VIM后打开文件。进入VIM后,进入命令 模式,使用冒号命令:e text.txt,就可以编辑 test.txt这个文件。 3)编写文件。按i即可。通过方向键控制光标的移动, 退格键消去光标前的一个字母。Del删除光标所在 处的字母。 4)保存文件和退出。写好文件,按Esc回到一般模 式,然后使用冒号命令:wq,可以实现存盘并退 出。
3、光标快速移动 在一般模式时,可以用下面的一些键位来快速 移动光标: j 向下移动一行 k l ctrl+f 向上移动一行 向右移动一个字 向下移动一屏
h 向左移动一个字符 符 ctrl+b 向上移动一屏
方向光标键
对于j、k、l和h键,可以在这些动作命令前加上 数字,如3j,表示向下移动3行。
4、文本插入
例如:
$ gcc –Wall –O1 –o myprogram myprogram.c
优化缺陷
优化通常可以给程序带来更优异的表现。但也 存在一些危险: 1、使用越高等级的优化策略,编译程序的时间就越 长。因此在集中开发的时候,不要使用优化选项。
2、一些优化选项,特别是-o3,会增大程序的体积。 这样编译出来的程序要求使用更多的RAM,当运行 时,就需要更多的交换空间。 3、当使用优化选项时,调试可能会变得比较困难。 因为优化器可能删除许多声明以及不用的代码。
C x:先按住Ctrl键,然后释放它,再按下x键;
M-x:同时按住Alt键和x键; M x:先按下Atl键,然后释放它,再按下x键。 需要更深入了解这些操作符号,可以键入C-h,进入帮 助区域,获得有关当前主题的帮助。
2、基本操作 1)光标的移动;
2)有关文本的操作;
3)有关文件的操作;
4)有关窗口的操作。
这时就会显示相应的文档说明。
可以通过“Page Down‖和“Page Up‖键来翻 阅文档。 要在说明书页中搜索关键字,键入“/‖和要搜 索的关键字或短语即可。
见下示例图:
有时候,同一主题的相关内容可在多个部分找 到。比如kill既是命令(在第1部分)又是系统调用(在 第2部分)。这时候必须键入man section topic, 明确指出需要信息所在的部分。
当采用命令行的方式进行软件开发时,如果把 源程序分成了很多个源文件,这时就不得不对每个 源文件都编译生成目标代码,最后在链接成可执行 文件。因此,在编译连接时需要输入多条长长的命 令,这是十分麻烦的事情,这时就可以借助make 程序来减少这样的工作。 Make依据一个Makefile来进行自动编译连接, Makefile文档可以告诉make要完成什么工作,而 一个简单的makefile文档就是以上那些gcc命令的 集合。编辑好之后,只需输入make就可以让它自 动地运行这些编译命令。对于比较大的程序,可以 用automake来自动生成Makefile。
如果不能确定特定主题所在的部分,可以使用 参数-k执行关键词搜索。例如man –k syslog
2.2 常用编辑器
2.2.1 VIM环境
VIM是Linux最基本的文本编辑工具,VIM是创 建和编辑简单文档最高效的工具。 1、VIM的模式 一般分成三种:
1)一般模式:一进入VIM就是出于一般模式,不能输入文字 2)编辑模式:按i进入编辑模式或插入模式,按ESC回到一般 模式。 3)命令模式:按“:‖进入命令模式,可以键入命令并执行。
另外一个有用的选项是-Werror开关,它要求 gcc把所有的警告视为错误进行处理。使用了Werror,当gcc检测到了警告信息后,将结束编译。 这在使用自动编译,如GNU的make工具时,特别 有用。当使用gcc或make制作大工程时,可能会产 生几千行的输出,这时可以用这种方法终止编译过 程。即:
将会产生一个名为a.out的文件。也可以通过-o 指定生成的目标文件名。
gcc –o test test.c
2.3.1.1 警告
在gcc中的警告信息为开关-W所控制。可以使用-Wall命 令获得大多数警告信息:
$ gcc –Wall -o test test.c
test1.c:3:warning: return type of ‗main‘ is not ‗int‘
该命令使gcc在给定文件filenames上执行编译 选项options指定的操作。
例:gcc test.c
用户将会得到一个名为a.out的文件。a.out是默认 生成的目标文件名。
然后再命令提示符下执行
$./a.out
就可以执行该程序。其中a.out是默认生成的目 标文件名,如果在同一个目录下,编译另外一个源 程序且没有指明生成的目标文件名,原先的a.out 文件会被覆盖。这时可以使用-o选项来指定生成的 目标文件名,如
2.1.4 文档帮助环境
在Linux下开发应用程序时,手册页(manpage)是主要的参考信息 来源。手册页中存放的是参考信息,对每一条shell命令、系统调用、 库函数、配置文件和系统的守护程序,都有相关的一页对其进行说明。 手册页分为八个部分:
第1部分:shell命令和用户级程序;
第2部分:系统调用相关文档; 第3部分:C和C++库函数和宏调用相关文档; 第4部分:在内核模块、/dev目录、/proc等目录中的特殊文件和设
第2章 Linux程序设计基础 ——C环境
2.1 Linux编程环境介绍 2.1.1 系统平台环境
Linux平台的特性:
1)Linux是多任务的。可以同时创建多个进程或线 程来完成多个不同的任务。因此,在某些情况下 必须小心对待进程或线程的同步和通信问题 2)Linux是个真正的多用户系统。存在内存管理的 安全机制,确保把不同用户的文件隔开。
9、替换 按esc键进入命令模式。
:s /SEARCH/REPLACE/g 把当前光标所处的行中的SEARCH单词替 换成REPLACE,并把所有SEARCH高亮显示 :%s SEARCH/REPLACE 把文档中所有SEARCH替换成REPLACE
百度文库
2.2.2 Emacs编辑器
作为普通用户,使用vim就足够了。如果是一个 程序员,特别是系统管理员,这时所关心的不再是 漂亮的界面,而是强大的功能和工作效率。这时, 使用emacs编辑器就是一个相当不错的选择。
进行此类操作前,vim应处于一般模式,操作后 vim仍处于一般模式:
x 删除一个字符
#x
dw #dw
删除几个字符,#表示数字,比如3x
删除一个单词 删除几个单词
dd
#dd d$
删除一行
删除多个行 删除光标到行尾的内容
J
删除光标所处的行与下一行之间的空格,把光标行和下一 行接在一起
6、恢复修改及恢复删除操作
$ gcc –Wall –Werror –o test test.c
此时gcc的警告是非常有帮助的,它可以让程序 员写出更加复杂的程序,-Wall选项在跟踪和调试的 时候,是有力的工具。建议将使用-Wall作为一种习 惯。
2.3.1.2 优化gcc
优化选项 在gcc中,可以使用其中一个-O选项对代码进行 优化。可以为gcc指定优化的不同级别。如果只是 简单使用-O,将使用第一级别的优化。当然可以使 用-O2或者-O3,这些选项决定了gcc的优化等级。 数字越高,gcc优化的等级就越高。高的优化等级 意味着程序运行得更快。
gcc –o test test.c
这样就在同一目录下生成名为test.o的目标文件, 然后执行./test即可。
一个基本实例:
//test.c #include<stdio.h> void main() {
printf(―Hello World!\n‖);
}
使用gcc编译器编译:
gcc test.c
进行此类操作前,vim应处于一般模式,操作 后vim处于编辑模式:
i 在光标之前插入
a
I A
在光标之后插入
在光标所在行的行首插入 在光标所在行的行末插入
o
O s
在光标所在行的下面插入一行
在光标所在行的上面插入一行 删除光标后的一个字符,然后进入插入模式
S
删除光标所在的行,然后进入插入模式
5、文本内容的删除操作
emacs主要就是其定义的快捷键太多太难记忆 以至于难于应用。
1、Emaces的运行和结束 在命令行中键入emacs或者emacs filename后就可以 运行Emacs编辑器。当系统中配置了X-Window时,可以用 xemacs来运行Emacs的图形界面版本。 以下介绍后面将用到的一些组合键的含义: C-x:同时按住Ctrl键和x键;