[進階] 安裝 Raspberry Pi 的 Toolchain

Toolchain 是一套能讓你編譯、連結、除錯程式的軟體,例如 GCCLDGDBAS glibc 等。

假設我們寫了一個 hello.c 的程式要在個人電腦上執行,我們只要打 gcc hello.c 就可以將 hello.c 編譯成 x86 架構的可執行檔。

由於 Raspberry Pi 上的處理器是 ARM 架構的,因此要將同樣的 hello.c 在 Raspberry Pi 執行,必須將程式編譯成 ARM 架構的可執行檔。

我們有兩個選擇,第一是直接在 Raspberry Pi 上編譯。第二是先在我們的個人電腦用 Raspberry Pi 的 toolchain 編譯完成後,再上傳到 Pi。

這裡簡介如何在個人電腦安裝 Raspberry Pi 的 toolchain,以在 ubuntu 上安裝 gcc-linaro-arm-linux-gnueabihf-raspbian 為例。

1. 在個人電腦安裝必要的套件。

2. 下載最新版的 toolchain。

3. 安裝 toolchain。安裝方法是將 gcc-linaro-arm-linux-gnueabihf-raspbian 加到環境變數裡。

4. 測試。先開啟一個新的終端機,輸入 arm 後連續按兩次 tab 鍵,如果跑出來一堆像下面的提示表示安裝成功。

讓我們實際寫一個 hello.c 並編譯它吧。

用 Raspberry Pi 的 toolchain 編譯 hello.c。這一步驟稱為交叉編譯(cross-compiling)。

讓我們看看檔案的資訊,可以看到該檔案是 ARM 的格式。

如果我們在 x86 環境下試著執行會發現無法成功。

我們把 hello-arm 上傳到我們的 Pi,假設 IP 為 192.168.1.2。

在我們的 Pi 上執行,看看結果吧。

 

常見問與答:
1. 為什麼要在個人電腦上安裝 toolchain?
因為個人電腦的處理速度通常高於 Raspberry Pi ,因此如果要開發比較大的專案(例如編譯核心),建議在個人電腦上處理,才不會等等等等。實務上在嵌入式系統的開發過程中,目標機器通常不會有 toolchain,因此常常會需要先在開發環境上將專案交叉編譯後再燒到目標機器。

2. 為什麼要安裝 gcc-linaro-arm-linux-gnueabihf-raspbian?
因為在 userland README.md 告訴我們的。

This repository contains the source code for the ARM side libraries used on Raspberry Pi. These typically are installed in /opt/vc/lib and includes source for the ARM side code to interface to: EGL, mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC, OpenVG.

Use buildme to build. It requires cmake to be installed and an arm cross compiler. It is set up to use this one: https://github.com/raspberrypi/tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian

3. 如果個人電腦(主機端)是 64 位元的要裝那個版本的 toolchain?
要使用 tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 目錄下的執行檔,也就是將該路徑加入環境變數即可。

相關教學

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

補貨通知我 我們將會在商品到貨的時候通知您。請在下方留下有效的Email。
Email 數量 我們不會將你的Email 告知任何人。