1 编译命令
进入解压源码得到的“itop4412_kernel_4_14_2_bsp”目录下
uboot、kernel和设备树全部编译的命令:
./build_all.sh
单独编译uboot:
cd u-boot-2017.11/u-boot/
./build.sh
单独编译内核和设备树:
cd linux-4.14.2_iTop-4412_scp/
./build_kernel.sh
如果并不想每次修改配置后覆盖到iTop-4412_scp_defconfig ,可以将build_kernel.sh改为:
export ARCH=arm
make uImage LOADADDR=0x40007000 -j4 # 4 看着cpu修改这个值
make dtbs
build_kernel.sh编译脚本中可知:iTop-4412_scp_defconfig 是默认的编译配置文件(.config)
arch/arm/configs/iTop-4412_scp_defconfig
如果修改内核配置文件,需要覆盖掉iTop-4412_scp_defconfig,才能编译成功
1#编译器老旧
/tmp/ccCFXeXG.s:225: Error: garbage following instruction -- `dsb nsh'
make[1]: *** [arch/arm/kernel/suspend.o] Error 1
make[1]: *** Waiting for unfinished jobs....
由于编译器过旧造成的,u-boot和kernel目录下的 Makefile 都是使用 arm-none-linux-gnueabi- 编译器的,由于我的服务器上有旧版itop4412的编译器,而且新版和旧版的软连接名字是一样的。
解决办法就是修改 Makefile 中的CROSS_COMPILE修改为:
CROSS_COMPILE := arm-fsl-linux-gnueabi-
2#缺少zlib库
error while loading shared libraries: libz.so.1: cannot open shared object file: no such file or direyumctory.
yum安装zlib库
yum install -y libz.so.1
//或者
yum install -y zlib.i686
2 生成的镜像–注意是SCP的核心板,可以在arch/arm/configs查看,并不支持POP的 。
uboot镜像:
u-boot-2017.11/u-boot/u-boot-iTOP-4412.bin
内核镜像:
linux-4.14.2_iTop-4412_scp/arch/arm/boot/uImage
设备树镜像:
linux-4.14.2_iTop-4412_scp/arch/arm/boot/dts/exynos4412-itop-elite.dtb