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

源码编译gcc-arm-10.2交叉编译链时libc构建失败求助

解决WSL2 Ubuntu 20.04下构建gcc-arm-10.2-2020.11交叉编译链的libc失败问题

环境与问题概述

  • 宿主系统:Windows 11 (ASUS TUF Dash F15)
  • WSL2发行版:Ubuntu 20.04 LTS
  • WSL内核版本:5.10.16.3-microsoft-standard-WSL2
  • 目标交叉编译链:gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu
  • 执行命令:../abe/abe.sh --manifest gcc-arm-aarch64-none-linux-gnu-abe-manifest.txt --build all
  • 核心失败原因:glibc构建阶段,gen-as-const.py调用临时生成的aarch64-none-linux-gnu-gcc失败,导致tcb-offsets.h和tlsdesc.h两个关键头文件生成失败,最终触发make错误。

错误详情

make[1]: *** [Makefile:470: csu/subdir_lib] Error 2
make[1]: Leaving directory '/home/pingpingy/SysProgramming/CrossCompiler/build/snapshots/glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256'
make: *** [Makefile:9: all] Error 2
make: Leaving directory '/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256'
WARNING: Previous command failed
WARNING: Make had failures!
ERROR (#115): build_all (Failed building libc.)
ERROR (#118): perform_build_steps (Step BUILD failed)
ERROR (#309): build_failure (Build process failed after 0 minutes)

补充错误日志:

Traceback (most recent call last):
File "../scripts/gen-as-const.py", line 120, in <module>
main()
File "../scripts/gen-as-const.py", line 116, in main
consts = glibcextract.compute_c_consts(sym_data, args.cc)
File "/home/pingpingy/SysProgramming/CrossCompiler/build/snapshots/glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/scripts/glibcextract.py", line 62, in compute_c_consts
subprocess.check_call(cmd, shell=True)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'aarch64-none-linux-gnu-gcc -std=gnu11 -fgnu89-inline  -g -O2 -Wall -Wwrite-strings -Wundef -fmerge-all-constants -frounding-math -fno-stack-protector -Wstrict-prototypes -Wold-style-definition -fmath-errno     -ftls-model=initial-exec      -I../include -I/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/csu  -I/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256  -I../sysdeps/unix/sysv/linux/aarch64  -I../sysdeps/aarch64/nptl  -I../sysdeps/unix/sysv/linux/generic  -I../sysdeps/unix/sysv/linux/wordsize-64  -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux  -I../sysdeps/nptl  -I../sysdeps/pthread  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../sysdeps/unix/sysv  -I../sysdeps/unix  -I../sysdeps/posix  -I../sysdeps/aarch64/fpu  -I../sysdeps/aarch64/multiarch  -I../sysdeps/aarch64  -I../sysdeps/wordsize-64  -I../sysdeps/ieee754/ldbl-128  -I../sysdeps/ieee754/dbl-64/wordsize-64  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/ieee754  -I../sysdeps/generic  -I.. -I../libio -I. -nostdinc -isystem /home/pingpingy/SysProgramming/CrossCompiler/build/builds/destdir/x86_64-pc-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/include -isystem /home/pingpingy/SysProgramming/CrossCompiler/build/builds/destdir/x86_64-pc-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/include-fixed -isystem /usr/include  -D_LIBC_REENTRANT -include /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h       -DTOP_NAMESPACE=glibc -DGEN_AS_CONST_HEADERS     -MD -MP -MF /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tcb-offsets.h.dT                  -MT '/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tcb-offsets.h.d /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tcb-offsets.h' -S -o /tmp/tmpsy_o8dhs/test.s -x c - < /tmp/tmpsy_o8dhs/test.c' returned non-zero exit status 1.
Traceback (most recent call last):
File "../scripts/gen-as-const.py", line 120, in <module>
main()
File "../scripts/gen-as-const.py", line 116, in main
consts = glibcextract.compute_c_consts(sym_data, args.cc)
File "/home/pingpingy/SysProgramming/CrossCompiler/build/snapshots/glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/scripts/glibcextract.py", line 62, in compute_c_consts
subprocess.check_call(cmd, shell=True)
File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'aarch64-none-linux-gnu-gcc -std=gnu11 -fgnu89-inline  -g -O2 -Wall -Wwrite-strings -Wundef -fmerge-all-constants -frounding-math -fno-stack-protector -Wstrict-prototypes -Wold-style-definition -fmath-errno     -ftls-model=initial-exec      -I../include -I/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/csu  -I/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256  -I../sysdeps/unix/sysv/linux/aarch64  -I../sysdeps/aarch64/nptl  -I../sysdeps/unix/sysv/linux/generic  -I../sysdeps/unix/sysv/linux/wordsize-64  -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux  -I../sysdeps/nptl  -I../sysdeps/pthread  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../sysdeps/unix/sysv  -I../sysdeps/unix  -I../sysdeps/posix  -I../sysdeps/aarch64/fpu  -I../sysdeps/aarch64/multiarch  -I../sysdeps/aarch64  -I../sysdeps/wordsize-64  -I../sysdeps/ieee754/ldbl-128  -I../sysdeps/ieee754/dbl-64/wordsize-64  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/ieee754  -I../sysdeps/generic  -I.. -I../libio -I. -nostdinc -isystem /home/pingpingy/SysProgramming/CrossCompiler/build/builds/destdir/x86_64-pc-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/include -isystem /home/pingpingy/SysProgramming/CrossCompiler/build/builds/destdir/x86_64-pc-linux-gnu/lib/gcc/aarch64-none-linux-gnu/10.2.1/include-fixed -isystem /usr/include  -D_LIBC_REENTRANT -include /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/libc-modules.h -DMODULE_NAME=libc -include ../include/libc-symbols.h       -DTOP_NAMESPACE=glibc -DGEN_AS_CONST_HEADERS     -MD -MP -MF /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tlsdesc.h.dT              -MT '/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tlsdesc.h.d /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tlsdesc.h' -S -o /tmp/tmp28v_udda/test.s -x c - < /tmp/tmp28v_udda/test.c' returned non-zero exit status 1.
make[2]: *** [../Makerules:271: /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tcb-offsets.h] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [../Makerules:271: /home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/tlsdesc.h] Error 1
make[2]: Leaving directory '/home/pingpingy/SysProgramming/CrossCompiler/build/snapshots/glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256/csu'
make[1]: *** [Makefile:470: csu/subdir_lib] Error 2
make[1]: Leaving directory '/home/pingpingy/SysProgramming/CrossCompiler/build/snapshots/glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256'
make: *** [Makefile:9: all] Error 2
make: Leaving directory '/home/pingpingy/SysProgramming/CrossCompiler/build/builds/x86_64-pc-linux-gnu/aarch64-none-linux-gnu/glibc-glibc.git~_rev_8dc76056654f8013a54678461fb023e988a17256'
WARNING: Previous command failed
WARNING: Make had failures!
ERROR (#115): build_all (Failed building libc.)
ERROR (#118): perform_build_steps (Step BUILD failed)
ERROR (#309): build_failure (Build process failed after 0 minutes)

解决方案步骤

1. 安装完整构建依赖

Ubuntu 20.04默认缺少部分交叉编译链构建所需的依赖,执行以下命令补全:

sudo apt update
sudo apt install build-essential flex bison libgmp3-dev libmpfr-dev libmpc-dev texinfo python3-dev libncurses5-dev

2. 清理旧构建残留

之前的失败可能留下损坏的中间文件,彻底清理后重新构建:

rm -rf /home/pingpingy/SysProgramming/CrossCompiler/build/

3. 确保临时交叉编译器可被识别

构建过程中会先生成临时交叉编译器,需确保其路径在系统PATH中:

export PATH="/home/pingpingy/SysProgramming/CrossCompiler/build/builds/destdir/x86_64-pc-linux-gnu/bin:$PATH"

4. 重新执行构建命令

指定Python3(避免系统默认Python版本冲突)并重新启动构建:

PYTHON=python3 ../abe/abe.sh --manifest gcc-arm-aarch64-none-linux-gnu-abe-manifest.txt --build all

5. 排查具体编译错误(若仍失败)

如果上述

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:45:44