2017-2018-1 20155321 20155330 实验一 开发环境的熟悉
2017-2018-1 20155321 20155330 实验一 开发环境的熟悉
组员博客:20155321
任务一 -交叉环境编译
-
- 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
- 解压老师提供的software目录中的“Ubuntu1204.rar”
- 用VMWare打开Ubuntu,用户名:linux,口令:1
- 建立实验目录"mkdir linux_20155321_20155330"
- 在实验目录中编写“hello word”程序,并补充几行打印学号姓名
- 参考bocsd目录中的脚本armc.sh, 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello
- 分别运行linuxhello,armhello,有什么结果?提交截图并用file命令分析原因。
-
运行结果:
-
运行结果显示,运行linuxhello没有问题且运行结果正确;运行armhello则显示无法执行二进制文件。利用file命令可知,armhello是32位的,属于arm,但Linux虚拟机是64位的,属于x86-64,因此无法运行armhello
任务二-目标机宿主机联通
-
- 解压超级终端软件“windows7st(Windows).rar”,并在桌面上建立快捷方式
- 把“USB转串口线”的USB口插入电脑,把串口连到实验箱的COM0
- 参考视频配置超级终端,用超级终端作为实验箱的显示终端
- 用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP
- 用网线连接电脑和ARM实验箱的网口NET1(最大屏旁边的)
- 用ping命令保证目标机和宿主机能互相ping通,提交ping通的截图
- 运行结果:
- 使用
ifconfig
查看到的目标机的IP为192.168.0.232,宿主机IP为192.168.0.230。在目标机上使用ping 192.168.0.230
命令查看目标机和宿主机能互相ping通。
任务三-目标机运行程序
-
- 学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用
- 在超级终端中用“mkdir /arm_组员1学号_组员2学号” 建立实验箱中程序运行目录“arm_组员1学号_组员2学号”
- 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号”通过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号”
- 超级终端中运行"cd /arm_组员1学号_组员2学号"
- 超级终端中运行"./armhello", 提交运行截图,并深入理解交叉编译
- 运行结果:
任务四-目标机模块分解
-
- 在目标机上重现上周“系统调用版的myod”
- 以静态库或共享库的方式在目标机上重现上周“系统调用版的myod”
- 提交超级终端中的运行截图
-
运行结果:
-
运行结果显示,在实验机上可以正常运行myod程序
-
此步我们组采用动态库的方式,通过命令
gcc change.c -shared -fpic -o myod.so
创建动态库,通过命令gcc myod.c myod.so -o od
链接动态库,最终便可正常运行。
新学到的知识点
-
基本概念
-
宿主机 :用于编译程序,一般是X86的PC机,也叫主机。
-
目标机:用于开发的系统,通常都是非X86平台。主机编译得到的可执行代码可在此运行。
-
交叉编译:在一个平台上生成另一个平台上的可执行代码。
- 交叉编译可以做到在一个平台上生成另一个平台上的可执行代码、同一个体系结构可以运行不同的操作系统、同一个操作系统可以在不同的体系结构上运行。利于程序的开发,灵活性更强。
-
NFS:网络文件系统,是FreeBSD支持的文件系统中的一种,允许网络中的计算机之间通过TCP/IP网络共享资源。
- 好处: 节省本地存储空间、不用多次建立Home目录、减少整个网络上可移动介质设备的数量。
-
超级终端:原理是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只说串口的情况),但并不显示输入。
-
实验体会
这次实验内容比较基础,基本上只要按照实验步骤就能够成功。主要的难点在于理解实验中所使用的命令的作用,和如何使用这些命令。