如何更改基于autotools的Bitbake配方的安装路径?

时间:2016-02-04 16:21:48

标签: yocto bitbake openembedded

我有一个基于autotools的BitBake配方,我希望在/usr/local/bin中安装二进制文件,并在/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}更改为/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/tzdata期间失败do_install()任务。它返回DEFAULT_TIMEZONE is set to an invalid value.这里是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}

2 个答案:

答案 0 :(得分:6)

您想要更改所有内容或仅一个食谱的路径吗?不确定为什么您只想将一个食谱更改为/usr/local,但无论如何。

如果您想要更改所有这些内容,那么简单的方法是在prefix或发行版配置(local.conf)中设置prefix = "/usr/local"

如果您想在特定食谱中执行此操作,则只需在食谱中指定prefix="/usr/local"exec_prefix="/usr/local"即可。

这些变量在meta/conf/bitbake.conf中定义,您可以在其中看到bindir$exec_prefix/bin,这可能是为prefix分配{my}}无法解决的原因。

答案 1 :(得分:0)

你的第一个策略是在正确的轨道上,但你只是通过更改"前缀"来实现比你想要的更多的事情。如果你查看sources / poky / meta / conf / bitbake.conf,当你设置变量"前缀"时,你会发现你正在破坏的一切。除了" / usr" (就像我的情况一样)。为了仅修改安装路径,手动为" - 前缀"配置选项,我需要设置该配方中列出的所有变量:

prefix="/your/install/path/here"
datadir="/usr/share"
sharedstatedir="/usr/com"
exec_prefix="/usr"