yocto依賴關係小結

首先說明,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之間。

  1. 屬於同一個recipe的task之間的依賴可以用addtask來設置
  2. 屬於不同recipe的task之間的依賴可以用多種方式來定義、如dependsrdependsdeptaskrdeptaskrecrdeptask等,下面詳細介紹每種方式。
  3. depends用於定義不同recipe之間的task之間的構建時依賴,如do_patch[depends] = "quilt-native:do_populate_sysroot"表示本recipe的do_patch任務依賴於quilt-nativedo_populate_sysroot任務。
  4. rdepends用於定義不同recipe之間的task之間的運行時依賴,使用方式和depends類似,都只是用於告訴yocto框架讓某個任務在另一個任務完成之後再運行
  5. deptask也是用於不同recipe之間的task之間的構建時依賴,不過和depends不同的是deptask可以用於批量定義依賴,如do_configure[deptask] = "do_populate_sysroot"表示本recipe的do_configure任務需要在所有包含於DEPENDS變量中的其它recipe的do_populate_sysroot任務運行之後才能運行
  6. rdeptask也是用於批量定義依賴關係,如do_package_qa[rdeptask] = "do_packagedata",deptask不同的是,它表示本recipe的do_package_qa任務需要在所有包含於RDEPENDS變量中的其它recipe的do_packagedata任務運行之後才能運行
  7. recrdeptask同時包含了deptaskrdeptask的功能,並且遞歸地尋找依賴recipe。也就是說如果A依賴了B,B依賴了C,C依賴了D,那麼在A中設置do_a[recrdeptask] = do_b表示A的a任務會在B、C、D的b任務都運行完畢之後再運行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章