先下载交叉编译工具链
wget -c https://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/arm-linux-gnueabihf/gcc-linaro-5.2-2015.11-2-x86_64_arm-linux-gnueabihf.tar.xz
tar xvf gcc-linaro-5.2-2015.11-2-x86_64_arm-linux-gnueabihf.tar.xz
ln -s gcc-linaro-5.2-2015.11-2-x86_64_arm-linux-gnueabihf gcc-linaro
配置工具链路径
vim etc/profile,最后一行加入,路径为工具链的解压存放路径。
export PATH=$PATH:/usr/local/toolchain/gcc-linaro/bin/
注意:
这两条环境变量每次开机都需要重新配置
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
切换root后不是修改的环境变量PATH,需要立即生效:source /etc/profile
配置
make colibri_imx7_emmc_defconfig
编译u-boot
make -j3 2>&1 | tee build.log
- -j3:多个后台任务进行
- 2:标准错误
- >:重定向
- &1:标准输出
- tee:同时输出到控制台和log文件中。
编译kernel
make -j3 zImage 2>&1 | tee build.log
编译设备树
make imx7d-colibri-eval-v3.dtb
编译常见问题
- ./mk权限不够:交叉编译器没安装或者编译器环境变量不对
- scripts/basic/fixdep:Permission denied:权限不够,chmod 777 fixdep
- section header offset = 11258999068426292 in file 'vmlinux.o'is bigger than filesize = 10252836:编译选项不对或者内核文件部分损坏
- 重启后编译出错:export = 设置的环境变量只起临时作用,没有写入到bashrc中
- 无法获得锁 /var/lib/apt/lists/lock:终端命令 sudo rm /var/lib/apt/list/lock
- 编译设备树时报错:arch/arm/boot/dts/imx7s.dtsi:44:43:fatal error:dt-bindings/clock/imax7d-clock.h: No such file or directory :原因:从git上下载时link文件丢失造成。解决方法:cd /linux-toradex/arch/arm/boot/dts/include 执行命令:ln -s ../../../../../include/dt-bindings/ dt-bindings重新构建链接符号即可。