源码编译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. 排查具体编译错误(若仍失败)
如果上述
相关产品推荐
相关产品推荐

