![](/img/trans.png)
[英]How can I add a folder or file to the root in a recipe with bitbake?
[英]How can I change the installation path of an autotools-based Bitbake recipe?
我有一個基於autotools的BitBake配方,我希望在/usr/local/bin
安裝二進制文件,並在/usr/local/lib
安裝/usr/local/lib
(而不是/usr/bin
和/usr/lib
,這是默認的目標目錄)。
這是autotools.bbclass
文件的一部分,我發現它很重要。
CONFIGUREOPTS = " --build=${BUILD_SYS} \
--host=${HOST_SYS} \
--target=${TARGET_SYS} \
--prefix=${prefix} \
--exec_prefix=${exec_prefix} \
--bindir=${bindir} \
--sbindir=${sbindir} \
--libexecdir=${libexecdir} \
--datadir=${datadir} \
--sysconfdir=${sysconfdir} \
--sharedstatedir=${sharedstatedir} \
--localstatedir=${localstatedir} \
--libdir=${libdir} \
...
我認為完成我想做的最簡單的方法就是簡單地更改${bindir}
和${libdir}
,或者將${prefix}
更改${prefix}
/usr/local
,但我沒有取得任何成功。這片區域。 有沒有辦法改變這些安裝變量,或者我是否以錯誤的方式考慮這個問題?
根據Ross Burton的建議,我嘗試將以下內容添加到我的食譜中:
prefix="/usr/local"
exec_prefix="/usr/local"
但這會導致構建在該配方的do_configure()
任務期間失敗,並返回以下內容:
| checking for GLIB... no
| configure: error: Package requirements (glib-2.0 >= 2.12.3) were not met:
|
| No package 'glib-2.0' found
在沒有這些修改變量的正常構建期間可以找到此包。 我認為添加以下行可能允許系統找到glib的包元數據:
PKG_CONFIG_PATH = " ${STAGING_DIR_HOST}/usr/lib/pkgconfig "
但這似乎沒有任何區別。
我還嘗試過Ross Burton的另一個建議,即將這些變量賦值添加到我的發行版的配置文件中,但這會導致它在meta/recipes-extended/tzdata
的do_install()
任務中失敗。 它返回DEFAULT_TIMEZONE is set to an invalid value.
這是tzdata_2015g.bb
的錯誤tzdata_2015g.bb
# Install default timezone
if [ -e ${D}${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ]; then
install -d ${D}${sysconfdir}
echo ${DEFAULT_TIMEZONE} > ${D}${sysconfdir}/timezone
ln -s ${datadir}/zoneinfo/${DEFAULT_TIMEZONE} ${D}${sysconfdir}/localtime
else
bberror "DEFAULT_TIMEZONE is set to an invalid value."
exit 1
fi
我假設我遇到了${datadir}
的問題,它引用了${prefix}
。
你想改變一切或僅一個食譜的路徑嗎? 不知道為什么你只想將一個食譜改為/usr/local
,但無論如何。
如果要更改所有這些,那么簡單的方法是在local.conf
或發行版配置中設置prefix
( prefix = "/usr/local"
)。
如果你想在特定的配方中做,那么只需在配方中分配prefix="/usr/local"
和exec_prefix="/usr/local"
。
這些變量在meta/conf/bitbake.conf
中定義,您可以在其中看到bindir
是$exec_prefix/bin
,這可能是分配prefix
不適合您的原因。
你的第一個策略是在正確的軌道上,但你只是通過改變“前綴”來破壞你想要的東西。 如果你查看sources / poky / meta / conf / bitbake.conf,當你將變量“prefix”設置為“/ usr”以外的其他東西時,你會發現你正在破壞的一切(就像我的情況一樣)。 為了僅修改安裝路徑,手動使用“--prefix”選項進行配置,我需要設置該配方中列出的所有變量:
prefix="/your/install/path/here"
datadir="/usr/share"
sharedstatedir="/usr/com"
exec_prefix="/usr"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.