一. 实验目的
- 交叉编译工具之Gcc编译器
1.1熟练掌握gcc工作原理和使用流程;
1.2熟练掌握gcc调试用工具的各项功能
copy
- 交叉编译工具之Gdb调试工具
2.1熟练掌握gdb的工作原理和使用流程;
2.2数量掌握gdb调试用工具的各项功能;
2.3能应用gdb完成复杂程序的调试工作。
copy
- 交叉编译工具之Make工程管理器
3.1了解make工程管理器的基本运行原理
3.2了解Makefile 的基本概念和基本结构,初步掌握编写简单Makefile 的方法
3.3了解递归Make 的编译过程,初步掌握利用GNU Make 编译应用程序的方法
copy
二. 实验内容
1.在Code目录下新建hello.c文件,,内容为输出“Wellcom to hnit!”这段语句,并用gcc进行编译;
2.编写一个test.c程序,完成两数相加的操作,相加操作由子函数完成,进行编译,并通过gdb进行调试.
3.利用make工程管理器完成以下程序的调试,并修改其中错误,直到其运行出正确的结果。
/*this is testgdb.c program ! */
int cmper(int a, int b )
{
if( a> b)
return "大于"
else
{
if(a==b)
return "相等";
else
return "小于";
}
}
int main()
{
int x,y;
printf("input two nums(eg:11 22):")
scanf("%d,%d",%d,%d);
printf("%d %d %d",a,cmper(a,b),a);
}
copy
三. 实验步骤
1.1在Code目录下新建hello.c文件,,内容为输出“Wellcom to hnit!”这段语句,并用gcc进行编译;
$ cd /home/shiyanlou/Code
$ touch hello.c
$ vi hello.c
copy
在新文档中加入如下代码:
#include "stdio.h"
int main()
{
printf("Wellcom to hnit");
}
copy
对hello.c文件处理分为四个阶段:
$ gcc -E hello.c -o hello.i
$ cat hello.i
$ gcc -S hello.i -o hello.s
$ cat hello.s
$ gcc -c hello.s -o hello.o
$gcc hello.o -o hello
copy
1.2.重新新建test.c文件,内容如下,请用gcc调试参数进行测试。带警告选项,查看提示警告情况
用vi新建test.c文件并保存
#include<stdio.h>
int main()
{
int i;
for(i = 0; i <= 3; i++)
printf("hello gcc!\n");
}
copy
可以用带-Wall选项进行调试,找出尽可能多的错误来。 如果不想看到警告信息,可以使用-w来禁止所有的警告。
2.1在Code目录下新建testc.c编辑程序,作为测试本次测试程序,要求是通过子函数实现两数相加问题。
用编辑器编输入以下程序
#include "stdio.h"
int add(int a ,int b)
{
int c;
c=a+b;
return c;
}
int main()
{
int x,y,z;
printf("input x ,y (eg:3 4)");
scanf("%d %d",&x,&y);
z=add(x,y);
printf("%d + %d = %d",x,y,z);
return 0;
}
copy
对以上代码进行编译链接,生成可执行文件test
$ gcc -g test.c -o test
$ ls -l |grep test
copy

2.2GDB 加载调试对象
进入 debugging 调试界面,载入调试程序,查看程序源码
$gdb test
(gdb) file test
copy
`

3.1用你熟悉的编辑器编编写以上程序;
3.2用gcc编译,并改正错误
/*this is testgdb.c program ! */
char* cmper(int a, int b )
{
if( a> b)
return "大于";
else
{
if(a==b)
return "相等";
else
return "小于";
}
}
int main()
{
int x,y;
printf("input two nums(eg:11 22):")
scanf("%d,%d",%d,%d);
printf("%d %s %d",a,cmper(a,b),a);
}
copy
3.3修改无语法错误后,进行带-g选项的编译,命令如下:
$ gcc -g testgdb.c -o testgdb
copy

3.4用gdb加载testgdb.c文件
$gdb testgdb
copy
3.5通过设置断点“b 行号“,对调试对象进行调试。

四. 实验总结
请对本次实验的过程进行思考和总结,并就相关问题和知识点进行说明及归纳。
1.学会了 交叉编译工具之Gcc编译器的使用方法
2. 学会了在终端调试C程序,不需要图形界面也能调出想要的结果
3.通过make工程管理器对工程实现自动化的管理能要我的开发项目的效率大大提高。
|