Yocto:将 glibc 库添加到 rootfs
Yocto: Adding glibc libraries to the rootfs
我正在使用 Yocto-morty 为我们的定制板 (iMX7) 构建二进制文件。我需要一些库,例如来自 glibc 包的 UTF-32.so、UTF-16.so、UTF-7.so 用于蓝牙文件传输。但是这些库在 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 中?
您可以删除它并重新编译它会起作用。
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)。
错误告诉您问题的答案。这些文件是 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 等)添加到图像中。
我正在使用 Yocto-morty 为我们的定制板 (iMX7) 构建二进制文件。我需要一些库,例如来自 glibc 包的 UTF-32.so、UTF-16.so、UTF-7.so 用于蓝牙文件传输。但是这些库在 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 中?
您可以删除它并重新编译它会起作用。
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)。
错误告诉您问题的答案。这些文件是 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 等)添加到图像中。