《嵌入式开发工具使用》
实验报告
学生姓名:______________________
学号:—
专业班级:_______________
指导教师:_________________
完成时间:
实验2嵌入式开发工具使用实验
一•实验目的
了解嵌入式开发工具套件组成,掌握开发工具安装,熟练运用gcc各命令选项,熟练编写Makefile和使用make工具,掌握gdb各命令用于应用程序调试。
二•实验内容
实验 2.1 arm-linux-gcc安装
实验2.2编译工具gcc使用
实验2.3 编写Makefile和使用make编译
实验2.4使用gdb调试应用程序
实验2.5 使用code::blocks进行图形化编程
三•预备知识
Linux使用等
四•实验设备及工具(包括软件调试工具)
硬件:ARM嵌入式开发平台、PC机Pentium100以上、串口线。
软件:WinXP或
UBUNTU开发环境。
五•实验步骤
5.1交叉编译工具配置及编译
第一步,解压缩交叉编译器工具,命令为:
#cd /tmp
_____________________________________________________________________ ? arm-l inu x-gcc可执行文件位于目录
/root/gcc-gdb-make_exp _________________________________________ 。
第二步,修改PATH环境变量,将arm-linux-gcc可执行文件目录添加到PATH环境变量中,命令为
5.2 arm-l inu x-gcc编译工具使用
【参看相关视频文件及指导书】:
要求:要求编写冒泡排序程序bubble.c及其头文件bubble.h和主程序main.c,各文件主要内容如下:
main.c 中定义数组并赋值(数组元素个数和赋值内容可以自己定义),调用bubble.c 中冒泡排序函数bubble(int *p,int n) 进行排序,调用输出打印函数print(int *p,int n) 进行输出。
bubble.c定义bubble(int *p,int n)和print(int* p ,int n)函数,分别完成冒泡排序功能和数组输出功能。
bubble.h完成bubble.c中函数的声明。
第一步,在/opt/exp_2 文件夹下按照上述要求编写源码;
第二步编译
(1)编译源码文件为可执行文件bubble,命令为:
gcc -o bubble main.c bubble.c
_______________________________________________________________________________ 。
__
(2)假设在/opt/exp_2文件夹下新建子目录in elude,并将bubble.h移到该文件夹下,编译可执行文件bubble,命令为:
gcc -o bubble main.c bubble.c -I./include
_______________________________________________________________________________ 。
__
(3)假如将bubble.c编译成动态库libbubble.so,具体命令为:
arm-linux-gcc -shared -fpic -o libbubble.so bubble.c -./include
此时利用libbubble.so编译可执行文件bubble,具体命令为:
gcc -o bubble main.c -lbubble -L./ -l./include
思考:如果将bubble 拷贝到开发板上,执行是否成功?怎样才能成功?
可执行程序bubble 生成过程中,分别使用-O1/-O2/-O3 进行编译,生成的可执行文件名分别为bublle1 、bubble2 和bubble3,观察这几个文件的大小分别为 9053 9053 9053 字_ 节。
如果用-g 命令选项生成可执行文件bubble4 ,则字节大小为__10451 字节。
思考:为何这几个可执行文件大小有差异
-g 比其他的大,因为包含了编译程序。
-01与-02与03因为程序较小,所以差距不大。
5.3编写Makefile和使用make工具
按照5.2要求,编写Makefile文件,要求能够完成源码文件编译和中间文件清除。
( 1 ) Makefile 如下
SRCS:=$(wildcard *.c)
0BJS:=$(patsubst %.c,%.o,$(SRCS))
CC=gcc
bubble:$(0BJS)
$(CC) -o $@ $(0BJS)
%.o:%.c
$(CC) -g -c -o $@ $< -I./include
clean:
rm $(0BJS) bubble
(2)________________________________________ 使用make工具编译生成可执行文件命
令为 __________________________________________ make _____________________ ;
(3)_________________________ 清除中间结果命令为 ______________________ make
clean ________________________ 。
_
5.4假设按照我们提供的实验源码bubble.c和main.c生成可执行文件,执行结果为:
发现执行结果并不符合我们的预期,使用gdb进行调试,列出具体步骤如下:
gdb bubble;
list bubble list b main Run List next print a[0] next Print a[0] Print a[1] Print a[3] Print a[4] Next Quit b print b main Run Next Step Next Next quit。