yocto依賴關係小結

2021-10-04 05:18:55 字數 1836 閱讀 9572

首先說明,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之間的依賴可以用多種方式來定義、如dependsrdependsdeptaskrdeptaskrecrdeptask等,下面詳細介紹每種方式。

depends用於定義不同recipe之間的task之間的構建時依賴,如do_patch[depends] = "quilt-native:do_populate_sysroot"表示本recipe的do_patch任務依賴於quilt-nativedo_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同時包含了deptaskrdeptask的功能,並且遞迴地尋找依賴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物件作為另外...