linux内核编译nvidi,nVIDIA JetSon TX1 内核kernel编译
一、准备工作1、在官网下载最新的kernel源代码: 2、ubuntu16.04编译环境准备:下载两个交叉编译器aarch64-linux-gnu和aarch64-linux-gnu,这两个编译器都是交叉编译需要使用的,在linaro官网可以下载:https://www.linaro.org/downloads/ 3、解压kernel源码和交叉编译器在合适的位置:tar -xvjf kernel_
一、准备工作
1、在官网下载最新的kernel源代码:
2、ubuntu16.04编译环境准备:
下载两个交叉编译器aarch64-linux-gnu和aarch64-linux-gnu,这两个编译器都是交叉编译需要使用的,在linaro官网可以下载:https://www.linaro.org/downloads/
3、解压kernel源码和交叉编译器在合适的位置:
tar -xvjf kernel_src.tbz2
二、内核编译
1、Export环境变量
$ export CROSS_COMPILE=
$ export CROSS32CC=gcc
$ export ARCH=arm64
2、编译内核文件zImage
$ make mrproper
$ make tegra21_defconfig
$ make zImage
3、编译kernel device tree components:
$ make dtbs
4、编译内核modules
$ make modules
一切正常的情况下,在~/kernel/arch/arm64/boot下即可得到编译后的目标文件。但是正常的情况总是很少,一般编译过程都会遇到一些问题,接下来总结下我编译时遇到的问题和解决方法,仅供参考。
三、编译遇到问题解决
1、编译错误:提示缺少compiler-gcc6.h文件
这是因为使用的编译器aarch64-linux-gnu是6.2.1版本,也就是gcc6系列版本,查看TX1的~/include/linux/下,只有gcc5以下版本文件
这个问题,在网上下载complier-gcc6.h放到~/kernel/include/linux/下即可解决问题。
2、编译错误:r7 cannot be used in asm here
这个错误网上有解决方案:
不多说,直接贴上git -diff
Index: kernel_source/arch/arm64/kernel/vdso32/Makefile
===================================================================
--- kernel_source.orig/arch/arm64/kernel/vdso32/Makefile 2016-04-08 21:28:52.651992663 -0600
+++ kernel_source/arch/arm64/kernel/vdso32/Makefile 2016-04-11 12:20:03.377388110 -0600
@@ -11,7 +11,7 @@
GCOV_PROFILE := n
-ccflags-y := -shared -fPIC -fno-common -fno-builtin -march=armv7-a
+ccflags-y := -shared -fPIC -fomit-frame-pointer-fno-common -fno-builtin -march=armv7-a
ccflags-y += -nostdlib -Wl,-soname=linux-vdso32.so.1 \
$(call cc-ldoption, -Wl$(comma)--hash-style=sysv)
asflags-y := -D__VDSO32__ -s
3、新编译器GCC6遇到 “-Werror=misleading-indentation”
原因在gcc官网以后说明,编译器增加了许多新的特性。
但是源码这种东西,不方直接该代码,所以尽量的回避。使用#pragma来规避,在需要保护的代码段增加如下代码
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored"-Wmisleading-indentation"(“双引号中包含忽略的错误”)
/* (code for which the warning is to be disabled) */
#pragma GCC diagnostic pop
编译过程中会遇到很多这种类似问题,都是如此修改。
4、make menuconfig提示:Unable to find the ncurses libraries....
解决办法:
Sudo apt-get install libncurses5-dev
完。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)