参考资料:https://wiki.radxa.com/RockpiS/dev/kernel-4.4
【编译内核】
wget https://github.com/radxa/kernel/archive/refs/heads/stable-4.4-rockpis.zip
unzip -q stable-4.4-rockpis.zip
cd kernel-stable-4.4-rockpis
make rk3308_linux_defconfig
make ARCH=arm64 CROSS_COMPILE=/home/oct1158/Documents/Code/C/Luckfox_Nova_SDK_250430/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
【解决报错】
HOSTLD scripts/dtc/dtc
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [scripts/Makefile.host:100: scripts/dtc/dtc] Error 1
make[1]: *** [scripts/Makefile.build:484: scripts/dtc] Error 2
make: *** [Makefile:582: scripts] Error 2
解决办法:修改顶层Makefile文件,找到第323行
HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
在最后面添加-fcommon
CC arch/arm64/kernel/vdso.o
arch/arm64/kernel/vdso.c: In function 憊dso_init?
arch/arm64/kernel/vdso.c:119:6: warning: 憁emcmp?reading 4 bytes from a region of size 1 [-Wstringop-overflow=]
error, forbidden warning:vdso.c:119
119 | if (memcmp(&vdso_start, "\177ELF", 4)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[1]: *** [scripts/Makefile.build:278: arch/arm64/kernel/vdso.o] Error 1
make: *** [Makefile:1029: arch/arm64/kernel] Error 2
解决办法:修改顶层Makefile文件,找到第420行
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
-Werror-implicit-function-declaration \
-Wno-format-security \
-std=gnu89 $(call cc-option,-fno-PIE)
在最后面添加-Wno-stringop-overflow
为了避免其他的错误,另外还需要添加-Wno-attribute-alias -Wno-sizeof-pointer-memaccess -Wno-missing-attributes -Wno-address-of-packed-member -Wno-zero-length-bounds -Wno-packed-not-aligned -Wno-builtin-declaration-mismatch -Wno-array-bounds -Wno-restrict -Wno-stringop-truncation
/bin/sh: 1: mkimage: not found
make[3]: *** [scripts/Makefile.lib:343: arch/arm64/boot/dts/rockchip/overlay/rockchip-fixup.scr] Error 127
make[2]: *** [scripts/Makefile.build:484: arch/arm64/boot/dts/rockchip/overlay] Error 2
make[1]: *** [scripts/Makefile.build:484: arch/arm64/boot/dts/rockchip] Error 2
make: *** [arch/arm64/Makefile:127: dtbs] Error 2
解决办法:sudo apt-get install u-boot-tools






