玩转NVIDIA Jetson AGX Xavier(13)--- L4T内核kernel编译之在x86 PC上交叉编译jetson kernel

上一篇讲了在jetson平台上编译内核,本篇讲在x86 PC上编译

这里提一点,我并不建议你用虚拟机来搞Linux开发,你的host至少应该是个ubuntu+windows双系统,虚拟机可能有各种问题,不要浪费时间在这些没有意义的问题上,可能会影响到你搞正事的情绪。

  1. 配置交叉编译环境
    请查看第10篇博文
    玩转NVIDIA Jetson AGX Xavier(10)— L4T内核kernel编译之Linaro 交叉编译环境搭建
  2. 下载内核源码
    官网上有通过git获取源码的方式,这里我不建议这么做,直接到网站上下载更好。
    打开NVIDIA Jetson的下载中心
    https://developer.nvidia.com/embedded/downloads
    玩转NVIDIA Jetson AGX Xavier(13)--- L4T内核kernel编译之在x86 PC上交叉编译jetson kernel_第1张图片
    进入下载中心后确认一下版本和产品,32.1,JAX and TX2。
    这个版本一定要和你手上的Jetson上运行的版本一致,不然会搞挂你jetson上的系统。
    以后的新版本源码下载也是如此,版本号和产品务必对应。
  3. 解压源码
    把下载好的文件拷到一个位置,我建议新建一个存放源码的文件夹,并且固定下来不要移动
    在新建目录下,解压第一层文件,下载的文件不一样文件名也不一样
tar -xjf JAX-TX2-public_sources.tbz2

第一层解压之后会出现一个public_sources的文件夹,继续解压第二层文件

tar -xjf public_sources/kernel_src.tbz2

解压完这层以后,目录下会出现kernel的文件夹,这个就是源码了。打开kernel会看到kernel-4.9 nvgpu nvidia三个文件,kernel-4.9是Linux4.9的源码。

注意:后边所有的步骤要在一个terminal下完成!不要打开多个命令窗

  1. 配置.config文件
    设置编译输出路径,我在这里用的是 /home/xavier/kernel 随便搞一个就行
    这个目录将会存储你从kernel编译出来的所有内容
TKOUT=/home/gaosiy/okernel

检查一下路径设置的对不对,注意下面代码里的$是要写上的

$TKOUT

会显示TKOUT=/home/gaosiy/okernel is a directory,意味着你的路径设置成功了,其实这个主要是为了后边写make参数时更方便,所以用变量代替。

打开源码路径

cd /home/gaosiy/kernel/kernel-4.9

确认一下编译输出路径

sudo mkdir -p $TKOUT

配置.config文件

sudo make ARCH=arm64 O=$TKOUT tegra_defconfig

成功后会提示你生成了.config文件。
注意,tegra_defconfig在每个版本或者每个产品里叫法都不一样,TX2好像是tegra18_defconfig

  1. 配置交叉编译变量

如果安装好了交叉编译工具,直接设置环境变量,这个变量只在一个terminal下有效,有保质期

export CROSS_COMPILE=/home/gaosiy/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

查看设置的变量对不对

export | grep CROSS_COMPILE

输出的应该跟你上边设置的是一样的

这里再说一句,熟练运用|grep在输出结果中定位关键字非常重要,各位加油

  1. 编译内核
    这里与在jetson上编译有很大不同,还是在kernel-4.9的目录下,使用
sudo make  ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE O=$TKOUT -j4

j4是选择用几个核进行编译,Xavier有4个核,如何查询核的数量可以看我的前边的一篇jetson常用命令的博文。
这里多输入了一个编译参数CROSS_COMPILE,这个参数如果不输入,将会默认使用本机的架构来进行编译,x86的编译器不认arm的很多变量,所以基本上刚跑起来就会因为变量报错而停止。

交叉编译的速度看你主机的CPU,我的是I5 7代,3.4GHz,十几分钟就完事了。

你可能感兴趣的:(NVIDIA,Jetson,玩转NVIDIA,Jetson,AI,GPU计算平台)