Yocto中一個軟件包是放在bb文件中的,然后很多的bb文件集成一個recipe(配方),然后許多的recipe又組成一個meta layer,因此,要添加一個包其實就是在recipe下面添加一個bb(bitbake配置文件)。下面使用helloworld作為一個例子。
### clone bb文件
首先是進入到一個recipe目錄下,例如下面就是到了recipes-graphics:
~~~
$ pwd
/media/work/iMX6/Yocto/sources/meta-fsl-arm/recipes-graphics
~~~
然后clone Package配置與source目錄的repo:
~~~
git clone https://github.com/tonyho/helloYocto.git
~~~
### 查看軟件包是否已經在Yocto中
~~~
09:25 hexiongjun:imx6qsabresd_build $ bitbake -s | grep hello
hello :3-r0
~~~
確認在了以后,就可以執行編譯等task了,如果有需要也可以deploy到rootfs中,這些操作可以參考我以前的一些博客。
### 一個軟件包的結構
使用tree可以看到,其有一個bb文件,然后其中還有一個目錄放著Makefile與source code:

其中的bb文件內容如下:
~~~
DESCRIPTION = "Hello World and Zlib test"
DEPENDS = "zlib"
SECTION = "libs"
LICENSE = "MIT"
PV = "3"
PR = "r0"
SRC_URI = " \
file://helloYocto.c \
file://zlibtest.c \
file://makefile \
"
LIC_FILES_CHKSUM = "file://helloYocto.c;md5=2dac018fa193620dc085aa1402e0b346"
S = "${WORKDIR}"
do_compile () {
make
}
do_install () {
install -d ${D}${bindir}/
install -m 0755 ${S}/helloYocto ${D}${bindir}/
install -m 0755 ${S}/zlibtest ${D}${bindir}/
}
FILES_${PN} = "${bindir}/helloYocto \
${bindir}/zlibtest "
~~~
可以看到,bb文件中指定了下面幾個變量的值:
1. SRC_URI
1. LIC_FILES_CHKSUM:這個是checksum,如果是基于版本管理的source,那么不需要,例如git與svn
1. FILES_$(PN):PN是Package number,指代軟件版本使用的PV與PR結合表示,即前面bitbake -s中看到的3-r0
還有兩個方法,這2個方法重載了bitbake中默認方法:
1. do_compile
1. do_install
這兩個方法,對應了Package中的compile與install task。
- 前言
- (1): Yocto 編譯后文件放在了哪里 輸出文件位置
- (2): Yocto Linux內核編譯目錄在哪?
- (3): Yocto 如何重新編譯Linux內核與dtb,并放到deploy目錄?
- (4): Yocto 如何確定(找到)一個包的名字
- (5): Yocto如何更改source code的下載與git clone地址
- (6): Yocto中如何共享已經下載的文件
- (7): Yocto Bitbake的clean與cleanall以及cleansstate的區別
- (8): Yocto 如何加快軟件包的下載 如何只下載所有需要的軟件包而不編譯
- (9): Yocto 軟件包的下載地址在哪
- (10): Yocto hellworld 添加一個軟件包
- (11): Yocto如何往最終的rootfs中添加軟件
- (12): 使用Yocto幫組我們尋找難找的固件與固件放置路徑
- (13): Yocto 查看軟件包的依賴關系
- (14): Yocto中編譯鏈的配置變更(tuning)
- (15): Yocto中的包管理器
- (16): Yocto 制作SDK分發Toolchain 脫離Yocto環境開發
- (17): Yocto License問題:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST
- (18): Yocto SDK Toolchian中靜態庫的添加
- (19): Yocto SDK Toolchian的使用