资源描述
实验七 交叉编译及Linux简单程序设计
一、实验目的
1. 熟悉 CVT-A8 教学系统中的 Linux 开发环境;
2. 掌握简单的 Linux 应用程序 helloworld 的编译;
3. 掌握 CVT-A8 教学系统中 Linux 应用程序的调试。
二、实验环境
预装Fedora10的pc机一台,CVT-A8系列实验箱,以太网线一根,串口线一根。
三、实验步骤
1. 建立工作目录
注:本实验以及后续的所有实验中用“$”符号表示在主机的 Linux 控制台上输入的命令行。用“#”符号表示在目标机的 Linux 控制台上输入的命令行。
$cd /opt/cvtech/examples
$cd helloworld
2. 编写程序源代码
在 Linux 下的文本编辑器有许多,常用的是 vim, Xwindow 界面下的 gedit 等。实际的源代码较简单,如下:
#include <stdio.h>
int main(){
printf("Hello, World!\n");
}
3. 在主机端编译并运行 helloworld 程序
$gcc -o helloworld helloworld.c
$./helloworld
使用file命令查看编译后的可执行文件信息,正确的结果将在主机的显示器上打印如下字符串:
Hello, World!
4.编译在目标机运行的 helloworld 程序
$arm-linux-gcc -o helloworld helloworld.c
由于编译器采用的是 arm-linux-gcc 编译器,因此使用上述命令编译出来的程序只能在ARM 处理器上运行,不能在 x86 平台下运行,如果在 Fedora10 中运行该程序将出现如下错误结果。使用file命令查看交叉编译后的可执行文件信息。
$./helloworld
bash: ./helloworld: cannot execute binary file
5. 下载 helloworld 程序到 CVT-A8 中调试
CVT-A8 通过将主机的/tftpboot/目录挂接到目标机的/mnt/ 目录中,因此,需要将第四步编译的程序 helloworld 拷贝到主机的/tftpboot/目录或其子目录下。
$cp helloworld /tftpboot/
在 PC 电脑的超级终端输入如下命令将主机端/tftpboot/目录挂接到/mnt 目录下:
#mount 192.168.1.180:/tftpboot/ /mnt/ –o lock
然后就可以运行 helloworld 程序:
#cd /mnt
#./helloworld
正确的结果将在超级终端上打印如下字符串:
Hello, World!
四、实验要求
1、要求随时观察记录实验结果;
2、比较可执行文件在主机和目标板上运行的不同,理解交叉编译的含义;
3、编写 helloworld 应用程序,编译 helloworld 应用程序,下载并调试 helloworld 应用程序。
五、实验报告要求
1、每人一份实验报告;
2、实验报告中要求对每一步操作和出现的结果详细记录并解释;
3、你认为做好本实验应该注意哪些方面?
六、思考题
1、为什么要使用交叉编译模式?
2、gcc和交叉编译工具生成的可执行文件有什么不同?
展开阅读全文