首先說明,yocto中的依賴本質上是任務之間的依賴,即使是使用depends
或者rdepends
定義的兩個recipe之間的依賴關係,但實際上在yocto執行時依賴關係還是會體現在這兩個recipe中的task之間,即在執行時,yocto會將recipe之間的依賴解析成task之間的依賴。
task之間的依賴關係可以分為兩種:屬於同乙個recipe的task之間的依賴或者屬於不同recipe的task之間的依賴。而屬於不同recipe的task之間的依賴又可分為構建時依賴或者執行時依賴,其中構建時依賴是指在yocto構建時某個包會依賴另乙個包提供的標頭檔案、so檔案或者可執行檔案來完成自身的編譯過程;而執行時依賴是指某個包編譯生成的可執行檔案在板子上執行時,需要依賴另乙個包提供的so檔案等。yocto對待構建時依賴和執行時依賴的區別不大,主要是將構建時依賴和執行時依賴解析成task之間的依賴時有些不同,且yocto會自動生成一些執行時依賴關係(參考前一篇部落格),另外執行時依賴關係指的是兩個包(packages變數中的)之間,而不是兩個recipe之間。
屬於同乙個recipe的task之間的依賴可以用addtask
來設定
屬於不同recipe的task之間的依賴可以用多種方式來定義、如depends
、rdepends
、deptask
、rdeptask
和recrdeptask
等,下面詳細介紹每種方式。
depends
用於定義不同recipe之間的task之間的構建時依賴,如do_patch[depends] = "quilt-native:do_populate_sysroot"
表示本recipe的do_patch
任務依賴於quilt-native
的do_populate_sysroot
任務。
rdepends
用於定義不同recipe之間的task之間的執行時依賴,使用方式和depends
類似,都只是用於告訴yocto框架讓某個任務在另乙個任務完成之後再執行
deptask
也是用於不同recipe之間的task之間的構建時依賴,不過和depends
不同的是deptask
可以用於批量定義依賴,如do_configure[deptask] = "do_populate_sysroot"
表示本recipe的do_configure
任務需要在所有包含於depends
變數中的其它recipe的do_populate_sysroot
任務執行之後才能執行
rdeptask
也是用於批量定義依賴關係,如do_package_qa[rdeptask] = "do_packagedata",
與deptask
不同的是,它表示本recipe的do_package_qa
任務需要在所有包含於rdepends
變數中的其它recipe的do_packagedata
任務執行之後才能執行
recrdeptask
同時包含了deptask
和rdeptask
的功能,並且遞迴地尋找依賴recipe。也就是說如果a依賴了b,b依賴了c,c依賴了d,那麼在a中設定do_a[recrdeptask] = do_b
表示a的a
任務會在b、c、d的b
任務都執行完畢之後再執行。
Yocto問題處理小結
最近在搞imx yocto l5.4.24 2.1.0的編譯,也是第一次接觸這個東西真的是遇到各種問題,也做個小結。按照文件使用的是ubuntu18.04,硬碟空間240g,記憶體空間3g。文件中建議的空間是120g,實際上在編譯過程中會出現硬碟空間不足的情況。編譯時最好使用固態硬碟,機械硬碟的編譯...
yocto執行時依賴規則
動態庫依賴。yocto在do package時會儲存每個包提供的.so檔案等資訊,在執行時,如果檢測到包a鏈結了包b提供的.so檔案,那麼會自動把b新增到a的依賴中 pc檔案依賴。yocto在構建時會使用pkgconfig生成包的 pc檔案,如果包a的 pc檔案 現了require 字樣指向包b提供...
依賴關係 關聯關係
一 依賴關係 a物件作為b物件的區域性變數或是方法形參的,b依賴於a,這時候我們稱a與b之間存在一種依賴關係 給土豪打 物件作為形式引數 void calltuhaowithphone czphone phone void sendmessagetodiaosi 1 什麼是引數依賴 當a物件作為另外...