YOCTO DUNFELL -GLIBC DO_STASH_LOCALE在启用Multilib的环境中失败

发布于 2025-01-29 08:55:04 字数 1905 浏览 4 评论 0原文

yocto构建失败了 glibc 。构建失败在 do_stash_locale 中,以下错误。

ERROR: lib64-glibc-2.31+gitAUTOINC+1094741224-r0 do_stash_locale: The recipe lib64-glibc is trying to install files into a shared area when those files already exist. Those files and their manifest location are:
 /mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/SUPPORTED
(matched in manifest-aarch64-glibc.stash_locale)
 /mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/sotruss
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/xtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/mtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/usr/share/info/libc.info
(matched in manifest-aarch64-glibc.stash_locale)
.....

在构建中,我们启用了Multilib,因为:

  1. 64位机(AARCH64),内核需要使用64位工具链构建。
  2. 32位用户空间应用程序,因此启用了mulitlib。
  3. 另外,我们还必须运行几个64位应用程序,因此还使用了Multilib:lib64。

因此,我们的配置是:

  require conf/machine/include/tune-cortexa53.inc
  require conf/multilib.conf
  MULTILIBS = "multilib:lib32 multilib:lib64"
  DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
  IMAGE_INSTALL_append = " lib32-glib-2.0 lib32-bash"
  DEFAULTTUNE = "cortexa53"
  DEFAULTTUNE_virtclass-multilib-lib64 = "armv8a"

在这里,我们将建立最终目标,作为 lib32-xxxxx-image 和64位应用程序中包含的64位应用程序,包括 image_install_append +=“ lib64-xxxxxx” 。

当我们在没有任何SSTATE缓存的情况下进行新鲜构建时,构建在Glibc do_stash_locale中失败。如果有些指针得到了这一点,这将非常有帮助吗?

Yocto build failed in glibc. Build failed in do_stash_locale with below error.

ERROR: lib64-glibc-2.31+gitAUTOINC+1094741224-r0 do_stash_locale: The recipe lib64-glibc is trying to install files into a shared area when those files already exist. Those files and their manifest location are:
 /mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/SUPPORTED
(matched in manifest-aarch64-glibc.stash_locale)
 /mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/sotruss
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/xtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/mtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/usr/share/info/libc.info
(matched in manifest-aarch64-glibc.stash_locale)
.....

Here in the build, we have enabled multilib because of:

  1. 64bit Machine (aarch64), Kernel needs to build using 64bit toolchain.
  2. 32bit userspace application, so mulitlib enabled.
  3. Also we have to run a couple of 64bit applications as well, so multilib:lib64 is also used.

So here our configuration is:

  require conf/machine/include/tune-cortexa53.inc
  require conf/multilib.conf
  MULTILIBS = "multilib:lib32 multilib:lib64"
  DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
  IMAGE_INSTALL_append = " lib32-glib-2.0 lib32-bash"
  DEFAULTTUNE = "cortexa53"
  DEFAULTTUNE_virtclass-multilib-lib64 = "armv8a"

Here we are building final target as lib32-xxxxx-image and 64 bit application included in the image recipe as IMAGE_INSTALL_append += " lib64-xxxxx".

When we do fresh build without any sstate cache, the build failed in glibc do_stash_locale. It would be very helpful if some pointers gets on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲影 2025-02-05 08:55:04

我通过将所需的配方添加到non_multilib_recipes中找到了一个解决方案,因此对于这些软件包,MLPReFix将删除并使用默认工具链来构建它。

因此,这里:

  1. 定义Multilib:使用32位工具链构建用户空间应用程序的LIB32。
  2. 对于所需的64位工具链应用程序,将这些配方添加到 non_multilib_recipes +=“ xxxx yyyy” 中,

因此在这里无需在此处添加32和64位多ilibs,因为默认调子为64位。

I found a solution by adding the required recipes into NON_MULTILIB_RECIPES so for those packages , mlprefix will removed and use default toolchain to build it.

So here:

  1. Define multilib:lib32 for building userspace applications using 32bit toolchain.
  2. For apps required 64bit toolchain, add those recipes into NON_MULTILIB_RECIPES += " xxxx yyyy "

So here no need to add both 32 and 64bit multilibs here as default tune is 64bit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文