肯定編譯機器配置知足以下要求:html
在編譯機器上安裝必要的編譯軟件,Ubuntu系統可以使用以下的命令進行安裝:python
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \ xz-utils debianutils iputils-ping libsdl1.2-dev xterm
編譯機器配置完成之後,使用git 命令從Poky上下載代碼,當前以yocto-2.5爲例:git
$ git clone git://git.yoctoproject.org/poky Cloning into 'poky'... remote: Counting objects: 361782, done. remote: Compressing objects: 100% (87100/87100), done. remote: Total 361782 (delta 268619), reused 361439 (delta 268277) Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done. Resolving deltas: 100% (268619/268619), done. Checking connectivity... done. $ git checkout tags/yocto-2.5 -b my-yocto-2.5
使用以下命令來構建一個image。這個生成過程是從源代碼構建一個包含工具鏈的完整的Linux發行版。github
Note: 編譯過程當中會下載一些東西,若是編譯機器沒有配置代理,那麼在編譯過程當中會報 Git 或 Fetch的問題。
運行oe-init-build-env腳本在編譯機器上構建Yocto項目的編譯環境。bash
$source oe-init-build-env
執行這個腳本的時候,遠在源代碼路徑(the Source Directory)下建立構建目錄(the Build Directory)。腳本執行完,當前的工做目錄就被設置成了構建目錄。而後,在以後的編譯過程當中,構建目錄保存和編譯過程當中生成的全部文件。模塊化
在設置完編編譯環境以後,會在構建目錄的conf文件夾下生成一個local.conf文件。默認,是去編譯一個qemux86的target,這個target適用於當前的模擬器。這裏面所使用的包管理器是RPM包管理器。工具
Tip學習
經過使用鏡像,能夠顯著加快編譯時間病防止fetch問題。在構建目錄的local.conf中加上以下幾行,就能夠使用鏡像。測試
SSTATE_MIRRORS = "\ file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \ file://.* http://sstate.yoctoproject.org/2.4/PATH;downloadfilename=PATH \n \ file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH \n \ "
這個事例只展現瞭如何在Yocto項目2.4,2.5和development area中添加sstate path,更詳細的介紹參考:http://sstate.yoctoproject.org/fetch
繼續執行以下的命令,爲咱們制定的target編譯一個OS鏡像,這個例子中,咱們編譯的是:core-iamge-sato
$bitbake core-image-sato
一旦鏡像編譯完成,就能夠啓動QEMU。(QEMU是可一個和Yocto 項目一塊兒的快速模擬器)
$runqemu qemux86
若是像學習更多的QEMU,能夠查看( the Yocto Project Development Tasks Manual)以下內容: "Using the Quick EMUlator (QEMU)".
點擊QEMU窗口的關閉按鈕或 Ctrl-C就能夠退出QEMU。
通常來講,layers是包含相關指令集和配置的庫,他告訴Yocto Project要作什麼。將相關的元數據隔離在功能特定的層中有助於模塊化開發,並更容易重用層中的元數據。
Note 方便起見,layers一般以「meta-」命名。
按照以下步驟能夠新增一個硬件層。
Yocto Project的源碼庫中有不少硬件層.當前以meta-altera爲例。
經過git命令,將這個git庫clone到本地。放在以前poky庫的頂層。
$ cd ~/poky $ git clone https://github.com/kraj/meta-altera.git Cloning into 'meta-altera'... remote: Counting objects: 25170, done. remote: Compressing objects: 100% (350/350), done. remote: Total 25170 (delta 645), reused 719 (delta 538), pack-reused 24219 Receiving objects: 100% (25170/25170), 41.02 MiB | 1.64 MiB/s, done. Resolving deltas: 100% (13385/13385), done. Checking connectivity... done.
這時,這個硬件層,就和其餘層同樣存在編譯機器的Poky庫下面了,而且包含了altera硬件所須要的所有元數據。Altera是歸Intel全部的。
local.conf文件中的「MACHINE」變量,指定了編譯生成的機器。這個例子中,「MACHINE」是"cyclones「。如今這個配置在:conf/machine/cyclone5.conf.
在編譯過程你使用一個層以前,必須將這個層添加到構建路徑的bblayers.conf文件中。
使用bitbake-layers add-layer命令將這個layer添加到配置文件中。
$ cd ~/poky/build $ bitbake-layers add-layer ../meta-altera NOTE: Starting bitbake server... Parsing recipes: 100% |##################################################################| Time: 0:00:32 Parsing of 918 .bb files complete (0 cached, 918 parsed). 1401 targets, 123 skipped, 0 masked, 0 errors.
添加layer的詳細信息在以下位置:Adding a Layer Using the bitbake-layers Script
按照這些步驟完成以後,你當前的Yocto Project開發環境中就添加了meta-altera層,並能夠執行cyclone5的編譯。
查看Altera的README能夠幫助你編譯一個cyclone5的image。
也許你有一個應用程序或者你須要隔離一組特定的行爲,你能夠使用bitbake-layers create-layer來建立本身的通用層。這個工具自動建立一個包含layer.conf配置文件的目錄,這個recipes-example子目錄裏面包含example.bb recipes文件,licensing文件和README。
命令以下:
$cd ~/poky $bitbake-layers create-layer meta-mylayer NOTE: Starting bitbake server... Add your new layer with 'bitbake-layers add-layer meta-mylayer'
更多詳細信息能夠參考Creating a General Layer Using the bitbake-layers Script