linux实验二交叉编译和Makefile实验报告 下载本文

内容发布更新时间 : 2024/5/6 0:08:38星期一 下面是文章的全部内容请认真阅读。

实验二 交叉编译和Makefile

一、实验目的

1.了解和掌握交叉编译模式和方法; 2.了解和掌握makefile文件的编写 3.学会使用交叉编译工具和make工具

二、实验环境

预装redhat9.0(内核版本2.4.x)的PC机一台,XScale嵌入式实验箱一台(已构建嵌入式linux系统),以太网线一根,交叉编译工具链。

三、实验步骤

1.安装交叉编译器arm-linux-gcc,并配置环境。 ?解压hybus-arm-linux-R1.1.tar.gz文件。

[root @localhost ~]# cp XSBASE/xsbase/Toolchain/hybus-arm-linux-R1.1.tar.gz /usr/local [root @localhost ~]# tar zvxf /usr/local/hybus-arm-linux-R1.1.tar.gz

此时是hybus-arm-linux-R1.1.tar.gz解压完成时候的截图。

?设置路径。

[root @localhost local]# vi ~/.bash_profile

此时将会进入编辑路径的编辑框,在编辑框内添加一条路径即可。 添加的路径为:PATH=$PATH:/usr/local/hybus-arm-linux-R1.1/bin 当编辑完上面的时候,按下ESC,然后输入\退出编辑框。

?使路径生效。

[root @localhost local]# source ~/.bash_profile

④测试arm-linux-gcc是否配置成功。

当出现arm-linux-gcc:No input files的时候,说明已经配置成功,没有输入文件是说明此时没有对任何一个文件进行交叉编译。

2.Linux简单程序设计。

?使用vi等编辑器编写一个简单程序,我现在是实现输出50以内的奇数和偶数。 [root @localhost ~]# mkdir 2008550533 [root @localhost ~]# cd 2008550533

[root @localhost 2008550533]# mkdir hehui [root @localhost ~]# cd hehui

[root @localhost hehui]# vi ji_oushu.c

/*输出50以内的奇数和偶数*/ #include void main() { int n=50; int i=0,j=0; printf(\以内的奇数为:\ for(i=0;i

}

?用gcc编译器编译并运行程序;使用file命令查看编译后的可执行文件信息。

[root @localhost hehui]# gcc ji_oushu.c -o hmily [root @localhost hehui]# file hmily

hmily: ELF 32-bit LSB executable, Intel PXA255/210 PCHCIA, version 1 (SYSV), for GNU/Linux 2.4, dynamically linked (uses shared libs), for GNU/Linux 2.4, not stripped

?运行gcc编译出来的可执行文件。

[root @localhost hehui]# ./hmily

④使用交叉编译器编译并运行。

A. [root @localhost hehui]# arm-linux-gcc -o hmily ji_oushu.c B. 打开另外一个终端,输入minicom进入板子里去。

C. 操作一下命令。

XSBase255B>boot XSBASE login:root

[root@XSBASE /root]$ftp 192.168.0.77 ftp>get ~/hehui/hmily 然后按下Ctrl + D

[root@XSBASE /root]$chmod +x hmily [root@XSBASE /root]$./hmily

3.Makefile文件的编写。

?编写一个文件prime.h,包含一个判断int类型的数是否为素数。

[root @localhost ~]# mkdir 2008550533/prime [root @localhost ~]# cd 2008550533/prime [root @localhost prime]# vi prime.h 进入prime.h编辑预定义程序。 #ifndef __PRIME_H__ #define __PRIME_H__ extern void prime(int ); #endif

当编辑完上面的prime.h程序时候,按下ESC,然后输入\退出编辑框。

?编写一个prime.c,实现prime.h头文件。 [root @localhost prime]# vi prime.c

进入prime.c编辑实现判定一个是否为素数的程序。 #include void prime(int n) { int i,j,m=0; printf(\素数为:\\n\ for(i=2;i<=n;i++) { for(j=2;j

当编辑完上面的prime.c程序时候,按下ESC,然后输入\退出编辑框。

?编写一个main.c主函数,实现用户输入整数,程序告诉用户这个数是否为素数。 [root @localhost prime]# vi prime.c 进入main.c编辑主函数。 #include #include \void main() {

int n=100; prime(n); }

当编辑完上面的main.c程序时候,按下ESC,然后输入\退出编辑框。

④使用gcc编译,查看运行结果。

[root @localhost prime]# gcc prime.c -o prime_hehui [root @localhost prime]# ./prime_hehui

⑤编写Makefile文件实现第④步功能,并使用make工具生成这个可执行文件。[root @localhost prime]# rm -r prime_hehui [root @localhost prime]# vi Makefile 进入Makefile编辑: prime:prime.o main.o gcc prime.o main.o -o prime

prime.o:prime.c gcc -c prime.c

main.o:main.c prime.h gcc -c main.c

clean: 37 rm -fr prime_hehui *.o

当编辑完上面的Makefile的时候,按下ESC,然后输入\退出编辑框。

[root @localhost prime]# make

[root @localhost prime]# ./prime_hehui