这是我defconfig
稍加修改的configs/raspberrypi3_64_defconfig
:
$ cat defconfig
BR2_aarch64=y
BR2_cortex_a53=y
BR2_ARM_FPU_VFPV4=y
# patches
BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_SYSTEM_DHCP="eth0"
# Linux headers same as kernel, a 6.6 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,576cc10e1ed50a9eacffc7a05c796051d7343ea4)/linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus broadcom/bcm2710-rpi-cm3"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
BR2_PACKAGE_RPI_FIRMWARE=y
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt"
# Required tools to create the SD image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# Filesystem / image
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh"
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh"
# Enable compressed kernel module support
BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
BR2_PACKAGE_KMOD_TOOLS=y
BR2_PACKAGE_XZ=y
BR2_PACKAGE_KMOD=y
BR2_PACKAGE_HOST_KMOD_XZ=y
发出make
,这是输出的最后几行:
checking for library containing yywrap... -ll
checking for gawk... (cached) gawk
checking for ln -s or something else... ln -s
checking for __attribute__... no
checking for ld --version-script... yes
checking whether C compiler accepts -Wno-error=enum-conversion... yes
checking whether C compiler accepts -Wno-unused-but-set-variable... yes
checking for openldap... no
checking pkg-config is at least version 0.9.0... yes
checking for MICROHTTPD... no
checking for CJWT... no
checking for CJSON... no
checking for sqlite3... no
checking for libintl... no
checking for crypto library... included libhcrypto
checking if compiling threadsafe libraries... yes
checking for inline... inline
checking for an ANSI C-conforming const... yes
checking for size_t... no
checking for egrep... (cached) /usr/bin/grep -E
checking for pid_t... no
checking for uid_t... no
checking for gid_t... no
checking return type of signal handlers... void
checking for standards.h... no
checking for netinet/ip.h... no
checking for netinet/tcp.h... no
checking for egrep -e... (cached) /usr/bin/grep -E
checking for /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc options needed to detect all undeclared functions... cannot detect
configure: error: in '/home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17':
configure: error: cannot make /home/mark/dev/buildroot/output/host/bin/ccache /usr/bin/gcc report undeclared builtins
See 'config.log' for more details
make[1]: *** [package/pkg-generic.mk:279: /home/mark/dev/buildroot/output/build/host-heimdal-f4faaeaba371fff3f8d1bc14389f5e6d70ca8e17/.stamp_configured] Errore 1
make: *** [Makefile:83: _all] Errore 2
我搜索了xconfig
工具内部host-heimdal
,但什么也没找到。为什么会失败?我的意思是,我没有更改其配置。
更新
- Buildroot版本:2024.08-rc3
- 下载方法:git clone
- 主机版本:Ubuntu 24.04
根本原因是 heimdal 的 autoconf 宏中存在一个错误。
作为一种快速的解决方法,您可以将其添加
ac_cv_sys_large_files=1 ac_cv_sys_file_offset_bits=64
到HOST_HEIMDAL_CONF_ENV
heimdal.mk 中。问题在于 heimdal 的 configure 脚本使用了
AC_SYS_LARGEFILE
宏,然后使用了其内部ac_cv_sys_large_files
变量ac_cv_sys_file_offset_bits
。这些变量在该宏的最近更新中已被删除。正确的解决方法可能是删除上游 heimdal 的配置脚本中对 largefile 的特殊处理。但我不知道为什么要引入这个……