RK3506G SDK 编译报错 - 万象奥科HD-RK3506-EVM板

wsl ubuntu22.04 版本
编译 RK3506G 的SDK

https://vanxoak.yuque.com/wb353n/hd-rk3506-evm/or02zhrg3shiycuf

编译万象奥科HD-RK3506-EVM板配套使用HD-RK3506G-CORE核心板

只编译: ./build.sh rootfs

报错:
2026-03-03T15:25:24 config.status: creating config.h
2026-03-03T15:25:24 config.status: executing default commands
2026-03-03T15:25:24 make[2]: Leaving directory '/home/zcb/rk3506_linux6.1_sdk_v1.2.0/buildroot/output/rockchip_hd_rk3506g_iot_nand/build/host-binutils-2.40'
2026-03-03T15:25:24 make[1]: *** [Makefile:1005: all] Error 2
2026-03-03T15:25:24 make[1]: Leaving directory '/home/zcb/rk3506_linux6.1_sdk_v1.2.0/buildroot/output/rockchip_hd_rk3506g_iot_nand/build/host-binutils-2.40'
2026-03-03T15:25:24 make: *** [package/pkg-generic.mk:303: /home/zcb/rk3506_linux6.1_sdk_v1.2.0/buildroot/output/rockchip_hd_rk3506g_iot_nand/build/host-binutils-2.40/.stamp_built] Error 2
2026-03-03T15:25:24 make: Leaving directory '/home/zcb/rk3506_linux6.1_sdk_v1.2.0/buildroot'
Please check details in /home/zcb/rk3506_linux6.1_sdk_v1.2.0/output/sessions/2026-03-03_15-25-03/br-rockchip_hd_rk3506g_iot_nand_2026-03-03_15-25-05.log
ERROR: Running /home/zcb/rk3506_linux6.1_sdk_v1.2.0/device/rockchip/common/build-hooks/30-rootfs.sh - build_buildroot failed!
ERROR: exit code 1 from line 19:
"$RK_SCRIPTS_DIR/mk-buildroot.sh" $RK_BUILDROOT_CFG "$IMAGE_DIR"
ERROR: call stack:
30-rootfs.sh: build_buildroot(19)
30-rootfs.sh: build_hook(359)
build-helper: try_func(63)
build-helper: try_hook(96)
build-helper: source(165)
30-rootfs.sh: main(408)
ERROR: Running /home/zcb/rk3506_linux6.1_sdk_v1.2.0/device/rockchip/common/build-hooks/30-rootfs.sh - try_func build_hook rootfs failed!
ERROR: exit code 1 from line 67:
build_hook
ERROR: call stack:
build-helper: try_func(67)
build-helper: try_hook(96)
build-helper: source(165)
30-rootfs.sh: main(408)

通过 claude-opus-4-6-thinking 模型解决问题

Ubuntu 22.04,正常不应该有这个问题。错误是 _TIME_BITS=64 被传给了 host 编译,但没有同时设置 _FILE_OFFSET_BITS=64。这说明 buildroot 的 target CFLAGS 泄漏到了 host 编译中(RK3506 是 32 位 ARM,SDK 开启了 time64 支持)。

确认原因:
# 查看 buildroot 配置中是否启用了 TIME64
grep -i "TIME64\|TIME_BITS\|FILE_OFFSET" \
buildroot/output/rockchip_hd_rk3506g_iot_nand/.config

结果:BR2_TIME_BITS_64=y

env | grep -i "CFLAGS|TIME_BITS"

CFLAGS_FOR_BUILD=-O2 -I/home/zcb/arm-buildroot-linux-gnueabihf_sdk-buildroot/include
CXXFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1
CPPFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
FCFLAGS= -O2 -g0
FCFLAGS_FOR_BUILD=
CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -O2 -g0 -D_FORTIFY_SOURCE=1

找到原因了!
环境变量被污染了! 你的 shell 中残留了交叉编译的 target CFLAGS,这些 32 位 ARM 的编译参数(_TIME_BITS=64)泄漏到了宿主机(x86_64)的 host-binutils 编译中。

注意这行也很可疑:

CFLAGS_FOR_BUILD=-O2 -I/home/zcb/arm-buildroot-linux-gnueabihf_sdk-buildroot/include
说明之前可能 source 过某个交叉编译环境脚本。

解决步骤
1. 检查是谁设置的这些变量
Bash

grep -n "CFLAGS\|TIME_BITS\|arm-buildroot\|LARGEFILE" ~/.bashrc ~/.profile ~/.bash_profile 2>/dev/null
如果找到了相关行,注释掉或删除。

2. 清除污染的环境变量
Bash

unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS FCFLAGS
unset CFLAGS_FOR_BUILD FCFLAGS_FOR_BUILD
unset CC CXX CPP AR AS LD
3. 验证环境已清理
Bash

env | grep -i "CFLAGS\|TIME_BITS\|CPPFLAGS\|arm-buildroot"
应该没有任何输出,如果还有就开一个全新终端:

Bash

env -i HOME=$HOME PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=$TERM bash --norc --noprofile
4. 清理并重新编译
Bash

cd /home/zcb/rk3506_linux6.1_sdk_v1.2.0

# 清理失败的构建
rm -rf buildroot/output/rockchip_hd_rk3506g_iot_nand/build/host-binutils-2.40

# 重新编译
./build.sh rootfs

根因总结: shell 环境中残留了之前交叉编译 SDK(arm-buildroot-linux-gnueabihf_sdk-buildroot)设置的 CFLAGS,其中包含 -D_TIME_BITS=64。这个参数在 x86_64 宿主机上编译 host 工具时导致 glibc 报错,因为 x86_64 本身不需要也不兼容这个设置。清掉这些环境变量即可。

posted @ 2026-03-03 16:11  口嗨养生博  阅读(3)  评论(0)    收藏  举报