《2022年实验二LINUX下C语言使用 .pdf》由会员分享,可在线阅读,更多相关《2022年实验二LINUX下C语言使用 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验二LINUX 下 C 语言使用、编译与调试实验实验目的1、复习 C 语言程序基本知识2、练习并掌握UNIX 提供的 vi 编辑器来编译C 程序3、学会利用gcc、gdb 编译、调试C 程序实验内容1、用 vi 编写一个简单的、显示Hello,World!的 C 程序,用 gcc 编译并观察编译后的结果2、vi 编写一个排序的程序,然后编译,运行。3、利用 gdb 调试程序4、运行生成的可执行文件。实验指导一、C 语言使用简介LINUX 中包含了很多软件开发工具。它们中的很多是用于C 和 C+应用程序开发的。二、文件编辑器vi vi 是在 UNIX 上被广泛使用的中英文编辑软件。vi 是 v
2、isual editor 的缩写,是UNIX提供给用户的一个窗口化编辑环境。进入 vi,直接执行vi 编辑程序即可。例:$vi test.c 显示器出现vi 的编辑窗口,同时vi 会将文件复制一份至缓冲区(buffer)。vi 先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编辑完成后,使用者可决定是否要取代原来旧有的文件。1、vi 的工作模式vi 提供二种工作模式:输入模式(insert mode)和命令模式(command mode)。使用者进入vi 后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。要输入信息,应转换到输入模式。(1)命令模式在输入模
3、式下,按ESC 可切换到命令模式。命令模式下,可选用下列指令离开vi:q!离开 vi,并放弃刚在缓冲区内编辑的内容:wq 将缓冲区内的资料写入磁盘中,并离开vi:ZZ 同 wq:x 同 wq:w 将缓冲区内的资料写入磁盘中,但并不离开vi:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w 配合使用(2)命令模式下光标的移动H 左移一个字符J 下移一个字符K 上移一个字符L 右移一个字符0 移至该行的首$移至该行的末 移至该行的第一个字符处H 移至窗口的第一列M 移至窗口中间那一列L 移至窗口的最后一列G 移至该文件的最后一列W,W下一个单词 (W 忽略标点)名师资
4、料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 3 页 -B,B 上一个单词 (B 忽略标点)+移至下一列的第一个字符处-移至上一列的第一个字符处(移至该句首)移至该句末 移至该段首 移至该段末NG 移至该文件的第n 列N+移至光标所在位置之后第n 列n-移至光标所在位置之前第n 列(3)输入模式输入以下命令即可进入vi 输入模式:a(append)在光标之后加入资料A在该行之末加入资料i(insert)在光标之前加入资料I 在该行之首加入资料o(open)新增一行于该行之下,供输入资料用O 新增一行于该行之上,供输入资料用Dd 删除当前光标所在行X 删除当前光标字符X 删除当前光标之
5、前字符U 撤消重做F 查找s 替换,例如:将文件中的所有FOX换成 duck,用:%s/FOX/duck/gESC 离开输入模式三、GNU C 编译器LINUX 上可用的C 编译器是GNU C 编译器,它建立在自由软件基金会编程许可证的基础上,因此可以自由发布。LINUX 上的 GNU C 编译器(GCC)是一个全功能的ANCI C 兼容编译器,而一般UNIX(如 SCO UNIX)用的编译器是CC。下面介绍GCC 和一些 GCC 编译器最常用的选项。1、使用 GCC 通常后跟一些选项和文件名来使用GCC 编译器。GCC 命令的基本用法如下:gcc options filenames 命令行选
6、项指定的编译过程中的具体操作2、GCC 常用选项GCC 有超过100 个的编译选项可用,这些选项中的许多可能永远都不会用到,但一些主要的选项将会频繁使用。很多的GCC 选项包括一个以上的字符,因此必须为每个选项指定各自的连字符,并且就像大多数LINUX 命令一样不能在一个单独的连字符后跟一组选项。例如,下面的命令是不同的:gcc-p-g test.c gcc-pg test.c 第一条命令告诉GCC 编译 test.c 时为 prof 命令建立剖析(profile)信息并且把调试信息加入到可执行文件里。第二条命令告诉GCC 只为 gprof 命令建立剖析信息。当不用任何选项编译一个程序时,GC
7、C 将建立(假定编译成功)一个名为a.out 的可执行文件。例如,gcc test.c 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 3 页 -编译成功后,当前目录下就产生了一个a.out 文件。也可用-o 选项来为即将产生的可执行文件指定一个文件名来代替a.out。例如:gcc o count count.c 此时得到的可执行文件就不再是a.out,而是 count。GCC 也可以指定编译器处理步骤多少。-c 选项告诉GCC 仅把源代码编译为目标代码而跳过汇编和连接步骤。这个选项使用得非常频繁因为它编译多个C 程序时速度更快且更易于管理。默认时GCC 建立的目标代码文件有一个
8、.o 的扩展名。3、执行文件格式:./可执行文件名例:./a.out./count 三、gdb 调试工具LINUX 包含了一个叫gdb 的 GNU 调试程序。gdb 是一个用来调试C 和 C+程序的强有力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能:监视程序中变量的值;设置断点以使程序在指定的代码行上停止执行;一行行的执行代码。以下是利用gdb 进行调试的步骤:1、调试编译代码为了使 gdb 正常工作,必须使你的程序在编译时包含调试信息。调试信息里包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb 利用这些信息使源代码和机器码相
9、关联。在编译时用 g 选项打开调试选项。2、gdb 基本命令命令描述file 装入欲调试的可执行文件kill 终止正在调试的程序list 列出产生执行文件的源代码部分next 执行一行源代码但不进入函数内部step 执行一行源代码并进入函数内部run 执行当前被调试的程序quit 终止 gdb watch 监视一个变量的值而不管它何时被改变break 在代码里设置断点,使程序执行到这里时被挂起make 不退出 gdb 就可以重新产生可执行文件shell 不离开 gdb 就执行 UNIX shell 命令3、应用举例(1)设有一源程序greet.c(2)编译,gcc-ggdb o greet greet.c,出错(3)gdb greet,出现提示符(gdb),此时可在提示符下输入gdb 的命令了,如:(gdb)run(gdb)list(4)退出调试状态,返回系统提示符下,(gdb)quit 四、参考程序main()printf(Hello,world!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 3 页 -