You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04构建Yocto镜像遇GLIBC版本不匹配问题求解决方案

Yocto构建HIPIFY时GLIBC版本不兼容问题解决思路

问题背景

我正在基于Ubuntu 18.04 LTS构建自定义Yocto镜像,已将HIPIFY作为目标端软件包加入,该包依赖LLVM+Clang。在meta-clang层中添加clang到HIPIFY的DEPENDS后,构建时出现GLIBC版本不兼容错误——本地构建机的GLIBC版本为2.27,但clang++及其依赖库要求更高版本的GLIBC(如2.32/2.33/2.34)。

错误信息

/home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libclang-cpp.so.14)     
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libclang-cpp.so.14)     
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libclang-cpp.so.14)     
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libLLVM-14.so)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libLLVM-14.so)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libLLVM-14.so)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libLLVM-14.so)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libstdc++.so.6)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libstdc++.so.6)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/libstdc++.so.6)
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/../lib64/libedit.so.0)  
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/../lib64/libxml2.so.2)  
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/../lib64/libxml2.so.2)  
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/../lib64/libxml2.so.2)  
| /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/clang++: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/zmolokwu/Ryzen_Workspace/zube_devel/poky/build/tmp/work/innoflight_cfc510_live_usb-innoflight-linux/hipify/1.0+git999-r0/recipe-sysroot/usr/bin/../lib64/../lib64/libxml2.so.2) 

环境信息

本地构建机的ldd输出:

ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

解决方案思路

1. 调整HIPIFY的recipe,使用native版本的clang

问题根源是构建过程中错误调用了目标端的clang++(位于recipe-sysroot下),该clang是针对目标平台编译的,依赖的GLIBC版本高于构建机的2.27。正确做法是使用构建机端的clang(meta-clang提供的native版本)来编译HIPIFY:

  • 将HIPIFY recipe中的DEPENDS += "clang"替换为DEPENDS += "clang-native";
  • 若HIPIFY使用CMake构建,在recipe中明确指定编译器路径:
    EXTRA_OECMAKE += " \
        -DCMAKE_C_COMPILER=${STAGING_BINDIR_NATIVE}/clang \
        -DCMAKE_CXX_COMPILER=${STAGING_BINDIR_NATIVE}/clang++ \
    "
    

2. 检查meta-clang层的版本兼容性

确认meta-clang层的分支与当前Yocto发行版(如Dunfell、Kirkstone)匹配。部分新版本的meta-clang构建的目标端clang默认依赖高版本GLIBC,若必须使用目标端clang,可:

  • 降级meta-clang到与Yocto发行版兼容的分支;
  • 在clang的recipe中添加--sysroot参数,指定Yocto交叉编译根文件系统,确保目标端clang的编译依赖Yocto内的GLIBC。

3. 不建议强制替换构建机的GLIBC

Yocto构建系统设计中,主机端工具链依赖主机系统的库文件,强行用Yocto中的GLIBC替换本地库会导致构建环境混乱,引发更多兼容性问题,因此不推荐这种方案。

4. 升级构建机系统(备选)

若以上方法无法解决,可将构建机升级到Ubuntu 20.04 LTS(GLIBC 2.31)或更高版本,满足clang对GLIBC的版本要求。但此方案可能引入其他构建环境的兼容性问题,需谨慎评估。

内容的提问来源于stack exchange,提问作者Zube Molokwu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:57:00