目录linux
咱们很容易在运行后发现,在Linux中只能运行使用gcc编译的linuxhello,而没法运行使用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译的armhello。
咱们尝试用file分析文件,最后咱们得出结论,linuxhello是在linux的x86-64系统下运行的,而armhello是在ARM系统下运行的 ,由于操做系统不一样而没法运行。
因此咱们学习道路交叉编译环境的概念。vim
交叉编译(cross-compilation)是指,在某个主机平台上(好比PC上)用交叉编译器编译出可在其余平台上(好比ARM上)运行的代码的过程。
于是,咱们想要在Linux上实现对arm文件的编译,咱们须要在Linux中搭建嵌入式ARM的系统。windows
- 使用本身笔记本电脑的,解压超级终端软件“windows7st(Windows).rar”,并在桌面上创建快捷方式(这个不用在实验室作)
- 使用本身笔记本电脑的,到实验室把“USB转串口线”的USB口插入本身的电脑,把串口连到实验箱的COM0
- 参考视频配置超级终端,用超级终端做为实验箱的显示终端
- 用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP
- 用网线链接实验室台式机(或本身笔记本电脑)和ARM实验箱的网口NET1(最大屏旁边的)
- 用ping命令保证目标机和宿主机能互相ping通,提交ping通的截图
实验过程网络
打开安装好的win7虚拟机、Ubuntu虚拟机学习
打开设备管理器,查看实验箱的端口号操作系统
将网络链接方式设为桥接模式,并创建主机与虚拟机间的网络链接命令行
ifconfig
,查看目标机ip地址为192.168.0.232。ifconfig
,查看宿主机id地址为192.168.0.230。
- 学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的做用
- 在超级终端中用“mkdir /arm_组员1学号_组员2学号_组员3学号” 创建实验箱中程序运行目录“arm_组员1学号_组员2学号_组员3学号”
- 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号__组员3学号”经过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号_组员3学号”
- 超级终端中运行"cd /arm_组员1学号_组员2学号_组员3学号"
- 超级终端中运行"./armhello", 提交运行截图,并深刻理解交叉编译
实验过程3d
sudo vim /etc/exports
/home/linux/linux_20175205_20175217_20175234 *(rw,sync,no_root_squash,no_subtree_check)
sudo /etc/init.d/nfs-kernel-server restart
mkdir //arm_20175205_20175217_20175234
(因为实验匆忙,咱们将该arm文件设置为“/arm_5)mount -t nfs -o nolock 192.168.0.230(宿主机IP):/home/linux/linux_20175205_20175217_20175234/arm_20175205_20175217_20175234
经过NFS把宿主机中的“linux_20175205_20175217_20175234” 映射到目标机中的“/arm_5cd /arm_5
./armhello
提交运行截图,并深刻理解交叉编译问题1:组员20175234在安装VMware时出现,以下问题,
rest
问题1解决方案:因为是第一次安装VMware Workatation Pro不知道是不是因为网上广泛存在的Windows补丁问题所致使的,尝试删除网传致使该缘由的最新补丁包,可是仍未解决
code
最后,安装了VMware Player
问题2:刚开始win7虚拟机、linux虚拟机,以及目标机、宿主机之间ping不通
问题2解决方案:将网络链接模式改成桥接模式,并创建虚拟机与主机间的链接
本次实验过程开始很是不顺利,目标机和宿主机始终没法ping过,后来发现虚拟机联网的方式是nat模式,而后在同窗的帮助下,好不容易将nat模式改成桥接,最后在下课前一秒完成了本次试验。