- 1
- 0
- 约2.41千字
- 约 3页
- 2023-09-05 发布于湖北
- 举报
《嵌入式开发工具使用》
实验报告
一.实验目的
学生姓名: 学 号 : 专业班级: 指导教师: 完成时间:
实验 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 开发环境。
五.实验步骤
交叉编译工具配置及编译
步骤【参看 04- Tiny6410 Linux 开发指南.pdf 文档 1.3.5 节】: 第一步,解压缩交叉编译器工具,命令为:
#cd /tmp
#tar xvzf arm-linux-gcc-4.5.1-v6-vfptgz –C /
,
arm-linux-gcc 可执行文件位于目录
/root/gcc-gdb-make_exp 。
第二步,修改 PATH 环境变量,将 arm-linux-gcc 可执行文件目录添加到 PATH 环境变量中,命令为
Export PATH=/root/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
。
第三步, 执行 arm-linux-gcc –v 可以看到交叉编译器版本为 gcc version
4.5.1 。
arm-linux-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 文件夹下按照上述要求编写源码; 第二步 编译
编译源码文件为可执行文件 bubble,命令为: gcc -o bubble main.c bubble.c
。
假设在/opt/exp_2 文件夹下新建子目录 include,并将 bubble.h 移到该文件夹下, 编译可执行文件 bubble,命令为:
gcc -o bubble main.c bubble.c -I./include
。
假如将 bubble.c 编译成动态库 libbubble.so,具体命令为: arm-linux-gcc –shared -fpic -o libbubble.so bubble.c –I./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 比其他的大,因为包含了编译程序。
-O1 与-O2 与 O3 因为程序较小,所以差距不大。
编写 Makefile 和使用 make 工具
按照 5.2 要求,编写 Makefile 文件,要求能够完成源码文件编译和中间文件清除。
Makefile 如下SRCS:=$(wildcard *.c) OBJS:=$(patsubst %.c,%.o,$(SRCS))
CC=gcc bubble:$(OBJS)
$(CC) -o $@ $(OBJS)
%.o:%.c
$(CC) -g -c -o $@
原创力文档

文档评论(0)