2017-2018-1 20155225 20155229 实验一 开发环境的熟悉

一、实验目的

学习了解交叉编译的作用,并用交叉编译的方式简单编程。

二、实验步骤

搭建交叉编译环境

  1. 用VMWare打开Ubuntu,建立实验目录

  2. 在实验目录中编写“hello world”程序,并打印组员学号信息

  3. 用gcc编译hello.c

  4. 用arm-none-linux-gnuenbi-gcc编译hello.c

  5. 分别运行查看结果

image

用gcc编译后,直接显示了运行结果;交叉编译后显示无法执行二进制文件。用file命令查看这两个文件,linuxhello是在linux的x86-64系统下运行的,armhello是在ARM系统下运行的。可知虽然都是linux系统下的程序,但也会因为具体的操作系统不同而无法运行。

image

开发环境的熟悉——目标机、宿主机联通

  1. 安装超级终端软件,用“USB转串口线”连接电脑(USB口)和实验箱com0(串口),用超级终端作为实验箱的显示终端。
  2. 用网线连接电脑和实验箱的网口NET1,保证互相能ping通。如下图所示:

image

开发环境的熟悉——目标机运行程序

  1. 在超级终端中建立实验目录
  2. 运行“mount -t nfs -o nolock 宿主机IP:/宿主机实验目录 目标机实验目录”,通过nfs将宿主机的实验目录映射到目标机中的实验目录里
  3. 在超级终端里运行armhello,成功运行!

image

开发环境的熟悉——目标机模块分解

在目标机上重现“系统调用版的myod”,在超级终端上运行,结果如下图:

image

三、实验中的问题及解决过程

ping不通

实验过程中换了三台电脑都ping不通,最后发现是网口接错了。今后做实验一定会吸取这次的教训,加强硬件知识,每一步都要细致无误。

宿主机上可以编译运行,但目标机不行

在实验第四步中,在目标机上重现myod,我们在宿主机上可以编译运行,但映射到目标机之后却不行。发现原来还是按习惯用gcc编译的,使用交叉编译后,成功运行。

四、学到的知识

NFS

NFS就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据。这就可以理解mount命令 -t nfs:即将宿主机的目录挂载到目标机,所以IP是宿主机的IP,一旦连接断开,目标机上不会再有该共享目录。
至于-o nolock,是文件锁,因为nfs mount默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。所以需要开启文件锁。

参考资料:

posted on 2017-10-22 20:33  20155225江智宇  阅读(223)  评论(2编辑  收藏  举报