目錄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模式改成橋接,最後在下課前一秒完成了本次試驗。