![](/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.