当前位置:文档之家› 第2章 Linux程序设计基础——C环境

第2章 Linux程序设计基础——C环境


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