实验三_Linux系统下C编程

上传人:xmg****18 文档编号:116462465 上传时间:2019-11-16 格式:PPT 页数:44 大小:1.36MB
返回 下载 相关 举报
实验三_Linux系统下C编程_第1页
第1页 / 共44页
实验三_Linux系统下C编程_第2页
第2页 / 共44页
实验三_Linux系统下C编程_第3页
第3页 / 共44页
实验三_Linux系统下C编程_第4页
第4页 / 共44页
实验三_Linux系统下C编程_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《实验三_Linux系统下C编程》由会员分享,可在线阅读,更多相关《实验三_Linux系统下C编程(44页珍藏版)》请在金锄头文库上搜索。

1、1* Linux系统下C编程 2* 文字编辑器vi 主要内容和要求 一.了解vi编辑器的作用和功能 二.熟悉vi的操作环境和切换方法 三.掌握vi操作的方式(几个常用键) 四.了解常用的快捷键 3* 一.vi编辑器概述 vi编辑器是各种UNIX/Linux系统都会支持的 全屏幕文字编辑器,与Windows下的文字编辑 器相比,vi的使用要麻烦一些,但功能强大,并 且是UNIX/Linux缺省编辑器。任何一位 UNIX/Linux系统管理者都应该学会用vi。 vi的操作环境是针对熟悉UNIX系统的使用者 而设计,初学者必须多加练习。 4* 二.vi的操作环境和切换方法 vi 共分为三种模式 (1

2、)命令模式:命令模式为vi的初始模式,可以使用“上下左 右”按键来移动光标,您可以使用“删除字符”或“删除整行”来 处理文档。在编辑模式或指令列模式中按【ESC】键可换回命 令模式。 (2)编辑模式:在命令模式中按下【i, I, o, O, a, A, r, R】等 字母之后才会进入编辑模式。按下上述的字母时,在画面的左 下方会出现【 -INSERT- 或 -插入- 】的字样,才可以做 文字数据输入。 (3)指令列模式:在命令模式当中,输入 【:】或【 / 】就 可以将光标移动到最底下那一行,进入指令列模式。在这个模 式当中,可以存盘、结束vi 、显示行号等操作。 5* 二.vi的操作环境和切

3、换方法 命令模式 编辑模式指令列模式 按i, I, o, O, a, A, r, R 按 : 或 / 按 ESC 6* 三.掌握vi操作的方式(几个常用键) 进入vi开始编辑:$vi 新文件名 例如:$vi newfile (打开名为newfile的旧文档,或新编一个名为 newfile的新文档) 刚开启vi时为命令模式,按下【i, I, o, O, a, A, r, R】等字母之后会进 入编辑模式。 编辑完毕按下【ESC】返回命令模式操作;在命令模式中按下【:】或【 /】可进入指令列模式。 在指令列模式中(有【:】提示时),可输入w(存档)、q(离开vi )、wq(存档并离开vi)、q!(不

4、存档离开vi)、h或help(在线说明 )、以及其它搜寻取代等指令。再按【ESC】回到命令模式。即: :w- 将编辑的文本存盘。:w!- 若文件属性为“只读”时,强制存盘 :q- 退出 vi :q!-退出且不存盘。:wq-存盘并退出 7* 主要内容 gcc简介 功能 命令 安装 利用gcc编译c程序 利用make工具简化编译过程 make简介 Makefile基本格式 调试 静态调试 动态调试 gdb调试工具的使用 8* gcc简介 简介: Linux系统下的gcc(GNU C Compiler)是 GNU推出的功能强大、性能优越的多平台编 译器,是GNU的代表作品之一。gcc是可以 在多种硬

5、体平台上编译出可执行程序的超级 编译器,其执行效率与一般的编译器相比平 均效率要高20%30%。 安装 首先查看linux系统是否安装了gcc, #rpm qa|grep gcc 如果没有安装,需要安装gcc-3.2.2- 5,libgcc-3.2.2,compat-gcc-7.3-2.96.118,gcc -g77-3.2.2-5几个软件包。 9* 对C/C+编译的控制(GCC的编译过程) 预处理(Preprocessing) gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件 中的文件包含(include)、预编译语句(如宏定义define等)进行 分析。 编译(Compilat

6、ion) Gcc调用cc1进行编译,这个阶段根据输入文件生成汇编语言。 汇编(Assembly) Gcc调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文 件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都 生成以.o为后缀的目标文件。 链接(Linking ) Gcc调用ld来完成连接工作,生成可执行文件。 10* gcc的使用 基本使用格式 $ gcc 选项 常用选项及含义 gcc常用选项选项 选项选项含义义 -o file将经过经过 gcc处处理过过的结结果存为为文件file,这这个结结果文件 可能是预处预处 理文件、汇编汇编 文件、目标标文件或者最终终的 可执执行文件。假设

7、设被处处理的源文件为为source.suffix ,如果这这个选项选项 被省略了,那么生成的可执执行文件默 认认名称为为a.out;目标标文件默认认名为为source.o;汇编汇编 文件默认认名为为source.s;生成的预处预处 理文件则发则发 送到 标标准输输出设备设备 。 11* gcc的常用选项 gcc常用选项选项 选项选项含义义 -c仅对仅对 源文件进进行编译编译 ,不链链接生成可执执行文件。 在对对源文件进进行查错时查错时 ,或只需产产生目标标文件时时 可以使用该选项该选项 。 -ggdb在可执执行文件中加入调试调试 信息,方便进进行程序的调调 试试。如果使用中括号中的选项选项 ,

8、表示加入gdb扩扩展 的调试调试 信息,方便使用gdb来进进行调试调试 -O0、1、2、3对对生成的代码码使用优优化,中括号中的部分为优为优 化级级 别别,缺省的情况为为2级优级优 化,0为为不进进行优优化。注 意,采用更高级级的优优化并不一定得到效率更高的代 码码。 - Dname=definitio n 将名为为name的宏定义为义为 definition,如果中括号中的 部分缺省,则则宏被定义为义为 1 12* gcc的常用选项 gcc常用选项选项 选项选项含义义 -Idir在编译编译 源程序时时增加一个搜索头头文件的额额外目录录 dir,即include增加一个搜索的额额外目录录。 -

9、Ldir在编译编译 源文件时时增加一个搜索库库文件的额额外目录录 dir -llibrary在编译链编译链 接文件时时增加一个额额外的库库,库库名为为 library.a -w禁止所有警告 -Wwarning允许产许产 生warning类类型的警告,warning可以是: main、unused等很多取值值,最常用是-Wall,表示 产产生所有警告。如果warning取值为值为 error,其含义义 是将所有警告作为错误为错误 (error),即出现现警告就停 止编译编译 。 13* gcc文件扩展名规范 gcc可以根据文件扩展名执行操作 gcc文件扩扩展名规规范 扩扩展名类类型可进进行的操作

10、方式 .cc语语言源程序预处预处 理、编译编译 、汇编汇编 、链链接 .C,.cc,.cp,.cpp, .c+,.cxx c+语语言源程序预处预处 理、编译编译 、汇编汇编 、链链接 .i预处预处 理后的c语语言源程序编译编译 、汇编汇编 、链链接 .ii预处预处 理后的c+语语言源程序编译编译 、汇编汇编 、链链接 .s预处预处 理后的汇编汇编 程序汇编汇编 、链链接 .S未预处预处 理的汇编汇编 程序预处预处 理、汇编汇编 、链链接 .h头头文件不进进行任何操作 .o目标标文件链链接 14* 使用gcc编译代码 源代码 示例源程序hello.c #include int main(void

11、) printf(“hello gcc!rn“); return 0; 15* 生成预处理文件 命令 $gcc E hello.c o hello.i 预处理文件hello.i的部分内容 extern void funlockfile (FILE *_stream) ; # 679 “/usr/include/stdio.h“ 3 # 2 “hello.c“ 2 int main(void) printf(“hello gcc!n“); return 0; 16* 生成汇编文件 命令 $gcc S hello.c o hello.s 汇编文件hello.s的部分内容 main: pushl%e

12、bp movl%esp, %ebp addl$16, %esp movl$0, %eax leave ret “ 17* 编译多个文件 文件清单 greeting.h #ifndef _GREETING_H #define _GREETING_H void greeting (char * name); #endif greeting.c #include #include “greeting.h“ void greeting (char * name) printf(“Hello %s!rn“,name); my_app.c #include #include “greeting.h“ #d

13、efine N 10 int main(void) char nameN; printf(“Your Name,Please:“); scanf(“%s“,name); greeting(name); return 0; 18* 生成二进制文件 生成目标文件 命令: $gcc c hello.c o hello.o 生成可执行文件 命令: $gcc hello.c o hello 运行程序 $./hello hello gcc! 19* 编译多个文件 目录结构(1) 编译命令 $ gcc my_app.c greeting.c o my_app 目录结构(2) 编译方式(1) $ gcc my

14、_app.c functions/greeting.c o my_app -I functions greeting.h ./ greeting.c my_app.c greeting.h ./ greeting.c my_app.c functions 20* 编译多个文件 目录结构(2) 编译方式(2) 分步编译 命令: 1、$gcc -c my_app.c -Ifunctions 2、$gcc -c functions/greeting.c 3、$gcc my_app.o greeting.o o my_app 思路: 编译每一个.c文件,得到.o的目标文件; 将每一个.o的目标文件链接

15、成一个可执行的文件; 21* 使用make工具 适用场合: 多个文件组成的软件项目 基本格式: 目标:欲生成的目标文件 依赖项:生成目标需要的文件 原理: 判断依赖项是否为最新,否则,生成新的目标 make工具的使用格式: make 命令选项 命令参数 通常使用make就可以了,make会寻找Makefile作 为编译指导文件; 目标:依赖项列表 (Tab缩进)命令 22* 使用make工具 Makefile示例 Makefile文件 1my_app:greeting.o my_app.o 2gcc my_app.o greeting.o -o my_app 3greeting.o:functions/greeting.c functions/greeting.h 4gcc -c functions/greeting.c 5my_app.o:my_app.c functionsgreeting.h 6gcc c my_app.c Ifunctions 23* 使用make工具 目标的依赖关系 my_app my_app.ogreeting.o my_app.cfunctionsgreeting.hfunctionsgreeting.c gcc c my_app.c Ifunctions gcc -c functionsgreeting.c

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号