资源描述:
《实验三_LINUX_下C语言使用、编译与调试实验2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三:LINUX下C语言使用、编译与调试实验一、目的:1、练习并掌握Linux提供的vi编辑器来编译C程序2、学会利用gcc、gdb编译、调试C程序3、学会使用make工具二、内容1、编写C语言程序,用gcc编译并观察编译后的结果,运行生成的可执行文件。2、利用gdb调试程序。3、学习编写makefile,并进行编译。三、操作1、文件编辑器vi进入vi,直接执行vi编辑程序。例:#vitest.c显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。编
2、辑完成后,使用者可决定是否要取代原来旧有的文件。1)vi的工作模式(1)输入模式输入以下命令即可进入vi输入模式:a在光标之后加入资料A在该行之末加入资料i在光标之前加入资料I在该行之首加入资料o新增一行于该行之下O新增一行于该行之上(2)命令模式在输入模式下,按ESC可切换到命令模式。命令模式下,可选用下列指令离开vi::q!离开vi,并放弃刚在缓冲区内编辑的内容:wq将缓冲区内的资料写入磁盘中,并离开viZZ同wq:x同wq:w将缓冲区内的资料写入磁盘中,但并不离开vi:q离开vi,若文件被修改过,则要被要求确认是否放弃修改的
3、内容,此指令可与:w配合使用(3)命令模式下光标的移动h左移一个字符j下移一个字符k上移一个字符l右移一个字符0(零)移至该行的行首$移至该行的行尾^移至该行的第一个字符处H移至窗口的第一行M移至窗口中间那一行L移至窗口的最后一行G移至该文件的最后一行W,w下一个单词(W忽略符号)B,b上一个单词(B忽略符号)(4)命令模式下的编辑命令dd删除当前光标所在行yy复制当前光标所在行p将复制的内容粘贴在光标所在的位置后P将复制的内容粘贴在光标所在的位置前x删除当前光标字符X删除当前光标之前字符u撤消·重做2、GNUC编译器1)使用gc
4、c通常后跟一些选项和文件名来使用gcc编译器。gcc命令的基本用法如下:gcc[options][filenames]命令行选项指定的编译过程中的具体操作2)gcc常用选项当不用任何选项编译一个程序时,gcc将建立(假定编译成功)一个名为a.out的可执行文件。选项含义:-oFILE指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,默认文件名是a.out.例如,#gcctest.c编译成功后,当前目录下就产生了一个a.out文件。也可用-o选项来为即将产生的可执行文件指定一个文件名来代替a.out。例如
5、:#gcc–ocountcount.c此时得到的可执行文件就不再是a.out,而是count。-cGCC仅把源代码编译为目标代码。默认时GCC建立的目标代码文件有一个.o的扩展名。-E对文件进行预处理-S对文件进行编译,生成汇编代码。-O对源代码进行基本优化。这些优化在大多数情况下都会使程序执行得更快。-g在可执行程序中包含标准调试信息。-Wall允许发出GCC能提供的所有有用的警告,也可以用-W(warning)来标识指定的警告。-lname链接静态库-Ldir库文件的搜索路径3)执行文件格式:./可执行文件名例:#./a.ou
6、t#./count4)例子mypow.c:定义mypow()函数unsignedlonglongmypow(unsignedintx,unsignedinty){unsignedlonglongres=1;if(y==0)res=1;elseif(y==1)res=x;elseres=x*mypow(x,y-1);returnres;}powtest.c:调用mypow()函数#include#includeintmain(intargc,char*argv[]){unsignedintx,y
7、;unsignedlonglongres;if((argc<3)
8、
9、(sscanf(argv[1],"%u",&x))!=1
10、
11、(sscanf(argv[2],"%u",&y))!=1){printf("Usage:powbaseexponent");exit(1);}res=mypow(x,y);printf("%u^%u=%u",x,y,res);return0;}编译过程:#gcc-cmypow.c#arrcsvlibpow.amypow.oa-mypow.o#gcc-opowtestpowtest.c-L.-lpo
12、w#./powtestUsage:powbaseexponent#./powtest2102^10=10243、gdb调试工具1)调试编译代码为了使gdb正常工作,必须使你的程序在编译时包含调试信息。调试信息里包含你程序里的每个变量的类型和在可执行