2019-2020-1 20175234 20175205 20175217 實驗一 開發環境的熟悉

2019-2020-1 20175234 20175205 20175217 實驗一 開發環境的熟悉


本組成員: 20175205 20175217 20175234

實驗步驟

1-交叉編譯環境-(使用本身筆記本電腦)

  • 實驗要求
  1. 安裝老師提供的software目錄中的「VMware-workstation-full-10.0.1-1379776.exe」
  2. 解壓老師提供的software目錄中的「Ubuntu1204.rar」
  3. 用VMWare打開Ubuntu,用戶名:linux,口令:1
  4. 創建實驗目錄"mkdir linux_組員1學號_組員2學號_組員3學號"
  5. 在實驗目錄中編寫「hello word」程序,另外補充幾行打印全部組員的學號姓名
  6. 參考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
  7. 分別運行linuxhello,armhello,有什麼結果?提交截圖並用file命令分析緣由。

咱們很容易在運行後發現,在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

2-目標機宿主機聯通

  • 實驗要求
  1. 使用本身筆記本電腦的,解壓超級終端軟件「windows7st(Windows).rar」,並在桌面上創建快捷方式(這個不用在實驗室作)
  2. 使用本身筆記本電腦的,到實驗室把「USB轉串口線」的USB口插入本身的電腦,把串口連到實驗箱的COM0
  3. 參考視頻配置超級終端,用超級終端做爲實驗箱的顯示終端
  4. 用ifconfig在超級終端中查看實驗箱IP(目標機),在Ubuntu中(宿主機)中用ifconfig在命令行查看IP
  5. 用網線鏈接實驗室臺式機(或本身筆記本電腦)和ARM實驗箱的網口NET1(最大屏旁邊的)
  6. 用ping命令保證目標機和宿主機能互相ping通,提交ping通的截圖
  • 實驗過程網絡

    • 打開安裝好的win7虛擬機、Ubuntu虛擬機學習

    • 打開設備管理器,查看實驗箱的端口號操作系統

    • 將網絡鏈接方式設爲橋接模式,並創建主機與虛擬機間的網絡鏈接命令行

    • 打開超級終端,選擇上一步查看的端口,並將「位/秒」處設爲115200,其他地方用默認設置。
    • 在超級終端輸入ifconfig,查看目標機ip地址爲192.168.0.232。
    • 在Ubuntu終端處輸入ifconfig,查看宿主機id地址爲192.168.0.230。
    • 分別在超級終端、Ubuntu虛擬機互ping,均可ping通。

3-目標機運行程序

  • 實驗要求
  1. 學習資源中第五週的「ARM實驗箱實驗指導書」的第二章,理解tftp和nfs的做用
  2. 在超級終端中用「mkdir /arm_組員1學號_組員2學號_組員3學號」 創建實驗箱中程序運行目錄「arm_組員1學號_組員2學號_組員3學號」
  3. 在超級終端中運行「mount -t nfs -o nolock 宿主機IP:/home/linux/linux_組員1學號_組員2學號 /arm_組員1學號_組員2學號__組員3學號」經過NFS把宿主機中的「linux_組員1學號_組員2學號」 映射到目標機中的「/arm_組員1學號_組員2學號_組員3學號」
  4. 超級終端中運行"cd /arm_組員1學號_組員2學號_組員3學號"
  5. 超級終端中運行"./armhello", 提交運行截圖,並深刻理解交叉編譯
  • 實驗過程3d

    • 打開虛擬機,運行Ubuntu系統
    • 配置/etc/exports,即在終端輸入sudo vim /etc/exports
    • 因爲NFS容許掛載的目錄及權限在文件/etc/exports中進行了定義,於是咱們須要在/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_5
    • 超級終端中運行cd /arm_5
    • 超級終端中運行./armhello 提交運行截圖,並深刻理解交叉編譯

實驗中的問題和解決過程

  • 問題1:組員20175234在安裝VMware時出現,以下問題,
    rest

  • 問題1解決方案:因爲是第一次安裝VMware Workatation Pro不知道是不是因爲網上廣泛存在的Windows補丁問題所致使的,嘗試刪除網傳致使該緣由的最新補丁包,可是仍未解決
    code

最後,安裝了VMware Player

  • 問題2:剛開始win7虛擬機、linux虛擬機,以及目標機、宿主機之間ping不通

  • 問題2解決方案:將網絡鏈接模式改成橋接模式,並創建虛擬機與主機間的鏈接

  • 問題3:使用mount指令顯示指令無效

  • 問題3解決方案:發現是未配置/etc/exports,更改配置後成功

  • 待解決的問題:試驗箱輸出結果爲亂碼

新學到的知識點

  • 交叉編譯
  • 宿主機與目標機
  • NFS
  • 超級終端
  • file命令

其餘(感悟、思考等,可選)

本次實驗過程開始很是不順利,目標機和宿主機始終沒法ping過,後來發現虛擬機聯網的方式是nat模式,而後在同窗的幫助下,好不容易將nat模式改成橋接,最後在下課前一秒完成了本次試驗。

參考資料

END

相關文章
相關標籤/搜索