2017-03-30 62 views
0

我有一個問題,我使用的配方不再有變量libdir定義。它似乎只有libdir_nativeBitbake如何知道源conf/bitbake.conf

這個食譜我使用的是poco-1.7.5Mortyopenembedded所以我認爲食譜應該正常工作。

由於缺少libdir變量,沒有安裝的文件正在打包,這正在破壞我的版本。

在短期內,我已經能夠通過創建一個append文件來解決這個問題,這使得libdir = "${libdir_native},但這似乎不應該是必要的。

我能想到的唯一的事情是Bitbake.conf文件沒有被Bitbake正確源代碼(或者使用了錯誤的.conf)。

任何建議,將不勝感激。

+0

配方看起來不錯。你能告訴你如何得出do_package發生時libdir沒有設置的結論嗎? 'bitbake -e poco | grep^FILES_'會告訴你它試圖打包什麼。 – jku

+0

有趣!我運行了'bitbake -e poco | grep^libdir'這給了我: 'libdir_nativesdk =「/ usr/lib」','libdir_native =「/ usr/lib」' ''' 我認爲這是告訴我'libdir'根本就不存在。 運行你粘貼的命令並獲得所有列出的軟件包(謝謝!),它們都試圖安裝在'/ usr/lib64'中。 但是,當運行Poco配方時,我得到:'警告:poco-1.7.5-r0 do_package:QA問題:poco:文件/目錄已安裝,但未包含在任何包中:'並且文件偵聽預先添加了'的/ usr/lib'。 那麼'libdir'設置爲'/ usr/lib64'? – sabjorn

+0

關於如何強制將軟件包安裝到'/ usr/lib'的任何建議?現在,我爲Poco設置了一個'bbappend',它設置了'libdir ='/ usr/lib',但我很想找到一個更持久的解決方案。 – sabjorn

回答

1

根據註釋,這似乎是問題:Poco上游安裝庫到/ usr/lib /中,但yocto打包期望它們位於$ {libdir}中,該文件可能與/ usr/lib /不同。

最常見的原因(對於cmake食譜)是因爲上游項目不支持CMAKE_INSTALL_LIBDIR。檢查上游構建系統是否有指定libdir的替代方法 - 這對於cmake項目來說是非常常見的。如果沒有,您可以在上游構建系統中添加對CMAKE_INSTALL_LIBDIR的支持(併爲您的配方添加補丁)。

另一種方法是添加一個do_install_append(),檢查$ {libdir}是否不是/ usr/lib /,並將所有內容從$ {D}/usr/lib /移動到$ {D} $ {libdir}在這種情況下。

+0

我遇到的問題是追蹤$ {libdir}被設置爲「/ usr/lib64」的位置。有關我如何找到這個的任何建議? – sabjorn

+0

我想知道爲什麼你需要? $ {libdir}被允許有一個不是「/ usr/lib」的值,配方應該能夠忍受這個......如果我沒有記錯的話,最常見的原因是「/ usr/lib64」是您的操作系統支持multilib(例如64位系統上的32位應用程序)。在這種情況下,請參閱meta/conf/multilib.conf中的baselib變量。 – jku

+0

這是'poco'配方,它迫使我擔心'$ {libdir}'設置爲'/ usr/lib'。如果'$ {libdir}'不是'/ usr/lib',它實際上不會打包這些庫。 我也很好奇這是爲什麼。大多數情況下,我只想解決這個問題,所以我不需要修改配方。 – sabjorn