Yocto 目前已經是各大IC廠在使用的專案類型,與之相似的,有OpenWRT 或是 BuildRoot
今天要介紹如何從Yocto Project 編譯出ToolChain,並且會說明如何使用ToolChain,最後會說明如何編譯一個簡單的Hello World.
如何編譯出ToolChain
首先我們可以使用以下的Command來編譯出 ToolChain
# bitbake meta-toolchain
編譯完成後,在 build/tmp/deploy/ 資料夾底下,會多出 sdk 資料夾,而裡面會有 ToolChain安裝檔,如下圖:
如何安裝ToolChain
把上面編譯出來的ToolChain安裝檔,執行並且加上參數 -h ,可以看到此安裝檔的使用說明,如下所示:
./oecore-x86_64-aarch64-toolchain-nodistro.0.sh
-h
Usage:
oecore-x86_64-aarch64-toolchain-nodistro.0.sh [-y] [-d <dir>]
-y
Automatic yes to all prompts
-d
<dir> Install the SDK to <dir>
========
Extensible SDK only options ============
-n Do not prepare the build
system
-p Publish mode (implies -n)
======== Advanced
DEBUGGING ONLY OPTIONS ========
-S Save relocation scripts
-R Do not relocate executables
-D use set -x to see what is
going on
-l list files that will be
extracted
如果沒有使用 "-d" 來指定安裝路徑,則系統預設會安裝在 /usr/local/oecore-x86_64/
簡單的安裝指令如下,會把ToolChain安裝在 /opt/ 路徑下:
# ./oecore-x86_64-aarch64-toolchain-nodistro.0.sh
-d /opt/
可以看到 /opt/ 底下有一些檔案,有一些是環境變數設定檔,而ToolChain都在 sysroot資料夾底下
如何編譯可以放在開發版上的 HelloWorld 程式
假設剛剛我們把ToolChain安裝在 /opt/ 底下,我們可以先使用下面指令來設定一些環境變數
# source
/opt/environment-setup-aarch64-poky-linux
環境變數設定好之後,變數 $CC 會是預設的ToolChain執行檔,印出 $CC 這個變數,可以看到如下圖片:
接著先撰寫好簡單的helloWorld.c 小程式,用下面的Command編譯,就可以編譯出開發板可以Run的小程式
# $CC helloWorld.c -o hello
由這邊也可以發現,當要自己加入Package 到 Yocto Project,通常這個Package的 Makefile裡面,不能指定CC的值,不然編譯會出問題,關於這個議題,我再開一篇文章來講解如何加一個Package到 Yocto Project...