Yocto:将glibc库添加到rootfs

时间:2018-01-19 05:29:20

标签: glibc yocto openembedded imx6

我正在使用Yocto-morty为我们的自定义板(iMX7)构建二进制文件。我需要一些库,如UTF-32.so,UTF-16.so,UTF-7.so,来自glibc包,用于蓝牙文件传输。但是这些库在rootfs中不可用,只有/ usr / lib / gconv下可用的文件是gconv-modules和ISO8859-1.so。所以我试图通过添加新的bbappend文件glibc_2.24.bbappend以及以下内容来添加这些库

FILES_${PN} += "${libdir}/gconv/*"

do_install_locale_append() {
cp -r ${dest}${libdir}/gconv ${D}${libdir}/
}

但是会导致以下错误:

ERROR: glibc-2.24-r0 do_populate_sysroot: The recipe glibc is trying to install files into a shared area when those files already exist. Those files and their manifest location are:

build_dir/tmp/sysroots/esomimx7d/usr/lib/gconv/ISO-2022-CN.so  Matched in b'manifest-esomimx7d-glibc-locale.populate_sysroot'

build_dir/tmp/sysroots/esomimx7d/usr/lib/gconv/ARMSCII-8.so Matched in b'manifest-esomimx7d-glibc-locale.populate_sysroot'

......

然后我尝试从图像中删除glibc-locale,但由于一些依赖性问题,我无法做到。

有人可以帮我将上面提到的库添加到rootfs吗?

2 个答案:

答案 0 :(得分:1)

错误告诉您问题的答案。这些文件是glibc-locale配方的一部分,因此您只需要将正确的软件包安装到rootfs中。

$ oe-pkgdata-util find-path \*/UTF-7.so
glibc-gconv-utf-7: /usr/lib/gconv/UTF-7.so

所以你需要为你的图像添加glibc-gconv-utf-7(或-utf-32等)。

答案 1 :(得分:0)

您可以删除它并再次编译它将起作用。

rm build_dir/tmp/sysroots/esomimx7d/usr/lib/gconv/ISO-2022-CN.so
rm build_dir/tmp/sysroots/esomimx7d/usr/lib/gconv/ARMSCII-8.so

这只适用于我们需要的永久溶胶。 这些文件属于glibc-locale,因此您需要安装所需的软件包。

  

$ oe-pkgdata-util find-path * / UTF-7.so
  的glibc-gconv UTF-7产品:> /usr/lib/gconv/UTF-7.so

将glibc-gconv-utf-7(或-utf-32等)添加到配方图像(例如core-image-minimal)。