Lab2樹莓派交叉編譯(windows平臺)

何爲交叉編譯?

所謂交叉編譯簡單的說,就是在一個平臺上編譯出在另一個在平臺能跑的可執行程序。比如,本文的情況是,在windows上編譯出在樹莓派上能跑的可執行程序。(其中,windows是運行在x86的cpu上,而樹莓派是arm的cpu。)

樹莓派上已經有gcc了,爲什麼還要用交叉編譯這種方式呢?

因爲,樹莓派的運行速度是比較慢的,而我們的PC機運行速度比較快,如果編譯都在樹莓派上做,那麼就只有慢慢等了。

教程目標:

在windows平臺上,搭建出樹莓派的交叉編譯環境

教程器材及軟件:

  1. 樹莓派的板子。
  2. SD卡(已經有鏡像刷入)。
  3. 電源線及USB充電器。
  4. cygwin。
  5. 有DHCP的網線。

步驟:

cygwin:

  1. 下載cygwin(http://www.cygwin.com/)。
  2. 安裝cygwin,途中需要看看,稍作選擇。(其中,源選擇163的可能會快一些。)
  3. 其中要特別選擇一下ssh,還有mintty,以便之後要用。其他就默認吧。當然,如果漏過了什麼也可以重新打開這個程序,選擇想要的,再安裝一遍。
  4. 這樣裝完了可能會出現一個錯誤,叫pango1.0.sh exit code 1之類的,那麼你需要進入到c:\cygwin\etc下面建一個文件夾叫pango,然後再執行一遍上面的過程,應該就沒事了。(這就是個bug,pango他們已經在改了)這樣裝完了,其實默認的gcc等一系列的東西是沒有,如果想要可以回去再選擇再安裝。

arm tool-chain:

  1. 到https://github.com/IanLinsdell/Raspberrypi去下載編譯好的工具鏈。其實是可以在cygwin中編譯出工具鏈的,但是,聽同學說,他在linux上花了2個小時和4G+硬盤空間去編譯,那還不如下一個現成的。
  2. 下載後,解開壓縮,有兩個選擇一個是hardfp,另一個是softfp。(目前,我也不知道有什麼區別。我用的是hardfp,之後試了一下浮點好像沒有問題。)將你的選擇解壓縮後放到cygwin下面,形成這樣的目錄結構。c:\cygwin\opt\cross\x-tools\arm-unknown-linux-gnueabi。並在環境變量PATH中加入,c:\cygwin\opt\cross\x-tools\bin\

測試:

  1. 打開mintty,建一個hello.cpp,然後,寫一個經典的helloworld,之後編譯一下
    arm-unknown-linux-gnueabi-g++ hello.cpp
    如果,好運的話,沒有什麼錯誤。(我之前嘗試其他編譯出來的工具鏈,不斷地出錯。)
  2. 用sftp命令將a.out上傳到樹莓派上,然後用ssh登錄後運行它。

後記:

在這過程中,不斷地出錯,不斷地上網去查,也不知道參考了多少。不能像linux下一樣,有比較多的教程,剩下的只是等待的時間。也發現了許多開源軟件的bug和問題,令人十分煩惱,比如下面這個。

但不管怎麼樣,我還是得感謝開源,感謝爲開源做出貢獻的人,感謝那些在網上分享出自己的知識的人。

參考:

http://www.a2p.it/wordpress/tech-stuff/development/remote-debugging-raspberrypi/

備註:

此教程爲浙江大學計算機學院嵌入式課程的實驗二實驗報告。


發佈了35 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章