在MACOS上實現交叉編譯


      在嵌入式開發過程中,設備的存儲空間和運算能力通常會比較低,這時候,比如要編譯一個linux的內核,嵌入式設備就不能勝任了,所以,實現交叉編譯還是很必要的。通過交叉編譯,我們就能夠在我們的pc上編譯出能夠在嵌入式設備上使用的可執行程序。

       下面,我將一步步講解如何在MAC OS上實現樹莓派(arm)的交叉編譯。

 

一。新建一個磁盤映像

       MAC OS的文件系統默認是大小寫不敏感的,而交叉編譯工具鏈是基於大小寫敏感的文件系統的,所以我們不能直接把工具鏈安裝在原來的文件系統中,而是需要新建一個大小寫敏感的磁盤印象用於安裝工具鏈。

 

       實現這一功能並不難,使用系統自帶的磁盤工具(disk utility在MACOS上實現交叉編譯 - hyice - IT小碼農)就可以實現了。打開磁盤工具,然后 文件>新建>空白磁盤映像,然后在彈出窗口中設置名稱為arm-x(便於后續操作),大小至少為500M,格式為Mac OS擴展(區分大小寫,日志式)的映像(如下圖)。  

        在MACOS上實現交叉編譯 - hyice - IT小碼農 

 

 

 

二。下載已經編譯完的工具鏈

 

從下面的鏈接下載已經編譯完的arm GNU Linux 工具鏈:

https://github.com/downloads/UnhandledException/ARMx/ARMx-2009q3-67.tar.bz2

 

如果你想自己一步步編譯,了解工具鏈中的具體元素的話,可以看一下下面這篇文檔:

https://github.com/UnhandledException/ARMx/wiki/Sourcery-G---Lite-for-ARM-GNU-Linux-(2009q3-67)-for-Mac-OS-X

 

 

三。解壓工具鏈壓縮包到磁盤映像

 

在終端進入壓縮包所在的目錄,執行下面的指令即可:

(新建的磁盤映像默認是掛載的,如果沒有掛載的話請先手動掛載)

tar -zx -C /Volumes/arm-x/ --strip-components 1 -f ARMx-2009q3-67.tar.bz2

 

四。使用工具鏈

 

       現在已經能夠直接使用工具鏈了,比如我寫了一個hello.c程序,現在可以直接使用工具鏈對程序進行編譯。

        在終端執行:

         /Volumes/arm-x/bin/arm-none-linux-gnueabi-gcc hello.c -o hello

        就可以獲得一個名為hello的可執行程序。這個程序在mac下是不能運行的,需要在arm處理器的設備上才能運行。

        在MACOS上實現交叉編譯 - hyice - IT小碼農 

      當然,如果你嫌輸入一大串路徑去調用arm-none-linux-gnueabi-gcc程序麻煩的話,可以把/Volumes/arm-x/bin目錄添加到PATH里去,這樣就能夠像使用系統命令一樣使用了。(添加環境變量的方法很多,建議把路徑添加到~/.profile文件中去,具體操作百度一下你就知道)

 

 

五。把hello程序上傳到樹莓派上

 

      如果你自己知道怎么把文件上傳到樹莓派上,那么請直接上傳吧。如果不會,我在這里提供兩種方法:

 

        1.使用sftp:這種方法無需另外設置,可以直接把文件上傳到樹莓派,但每一次更改都需要重新上傳。

            步驟:

     sftp pi@192.168.1.5 (ip地址根據你的地址進行更改)

                     然后輸入密碼raspberry

                      put /本地文件路徑    /上傳到樹莓派上的目錄

   (例如:put /Users/icool/Desktop/hello . )

                    在MACOS上實現交叉編譯 - hyice - IT小碼農

      2.使用NFS:這種方法需要先進行配置,但配置好后使用十分方便。可以將樹莓派上的文件直接映射到mac上,這樣在mac上修改即可,無需再上傳。

              具體步驟可以參考這篇文檔:

     http://server.zdnet.com.cn/server/2007/0831/482007.shtml

 

 

 

 

六。在樹莓派上執行上傳的程序

 

ssh連接上樹莓派(或者任意方法,登陸上樹莓派即可)。

           然后進入hello程序所在目錄,執行:

./hello

結果如下:

在MACOS上實現交叉編譯 - hyice - IT小碼農

 

 

七。測試浮點程序

 

       通過上一步可以發現交叉編譯得到的hello,world程序可以在樹莓派上正常運行,下面要檢驗一下浮點程序是否也可以正常運行。

 

       先寫一個簡單的浮點程序:

      在MACOS上實現交叉編譯 - hyice - IT小碼農

       檢驗結果:

      在MACOS上實現交叉編譯 - hyice - IT小碼農


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM