簡體   English   中英

如何更改基於autotools的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 ,但我沒有取得任何成功。這片區域。 有沒有辦法改變這些安裝變量,或者我是否以錯誤的方式考慮這個問題?


更新:

策略1

根據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  "

但這似乎沒有任何區別。

策略2

我還嘗試過Ross Burton的另一個建議,即將這些變量賦值添加到我的發行版的配置文件中,但這會導致它在meta/recipes-extended/tzdatado_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或發行版配置中設置prefixprefix = "/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM