一. 实验目的
熟悉并掌握嵌入式开发常用工具的运用
- 目的1
1:熟练掌握gcc工作原理和使用流程; 2:熟练掌握gcc调试用工具的各项功能。
- 目的2
1:熟练掌握gdb的工作原理和使用流程; 2:数量掌握gdb调试用工具的各项功能; 3:能应用gdb完成复杂程序的调试工作。
- 目的3
1:了解make工程管理器的基本运行原理; 2:了解Makefile 的基本概念和基本结构,初步掌握编写简单Makefile 的方法; 3:了解递归Make 的编译过程,初步掌握利用GNU Make 编译应用程序的方法。
二. 实验内容
- 内容1
1.在Code目录下新建hello.c文件,,内容为输出“Wellcom to hnit ! ”这段语句,并用gcc进行编译; 2.对刚编写的代码通过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:用vi在/home/shiyanlou/Code/目录中新建hello.c文件
$ cd /home/shiyanlou/Code
$ touch hello.c
$ vi hello.c
copy
在新文档中加入如下代码:
#include "stdio.h"
int main()
{
printf("Wellcom to hnit");
}
copy
输入完毕按“:wq”退出
对hello.c文件处理分为四个阶段: 阶段1: 利用下面的示例命令:
$ gcc -E hello.c -o hello.i
copy
观察生成的中间文件test.i和源文件的区别
$ cat hello.i
copy
阶段2:
这个阶段对应的GCC命令如下所示:
$ gcc -S hello.i -o hello.s
copy
观察生成的中间文件test.i和源文件的区别
$ cat hello.s
copy
阶段3: 程序汇编阶段阶 这个阶段对应的GCC命令如下所示:
$ gcc -c hello.s -o hello.o
copy
.o文件为二进制文件,如果试图用以下命令查看,屏幕将显示乱码。
$cat hello.o
copy
阶段4: 程链接阶段 这一步骤,用下面的示例命令完成:
$gcc hello.o -o hello
copy
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: 在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
GDB 加载调试对象
进入 debugging 调试界面,载入调试程序,查看程序源码
用
$gdb test
copy
实现
实验成功
四. 实验总结
1.出现的错误: 使用此代码
$cat hello.o
copy
时
发生错误,屏幕显示乱码。用
$ gcc -c hello.s -o hello.o
copy
代码实现。因此要熟记各指令的使用以及用处。
2. 心得:通过此次学习,让我深入学习并了解的gcc工作原理和使用,学习了gdb调试用工具的使用以及深入应用。了解make工程管理器的基本运行原理,基本概念和基本结构。使用代码时应仔细思考用法以及作用,否则将发生错误。
|