荔枝派Zero(全志V3S)编译Kernel

简介: 上文我们讲述了uboot编译及配置,本文讲述了如何编译kernel,对编译过程中遇到的问题进行解决

前言


上文我们讲述了uboot编译及配置,本文讲述了如何编译kernel,对编译过程中遇到的问题进行解决


一、安装依赖


sudo apt install git wget make gcc flex bison libssl-dev bc kmod


二、安装交叉编译器


交叉编译器的安装同上文 Uboot 的编译中安装的交叉编译器一致,这里不再多做解释


三、下载linux源码


1、(默认是zero-5.2.y分支):–depth 1 指拉取最近一次更改,不然会拉取所有更改(警告,数据量爆炸!)

git clone -b zero-5.2.y --depth 1 https://github.com/Lichee-Pi/linux.git

2、修改makefile文件

cd linux
vim Makefile
[364]ARCH            = arm
[365]CROSS_COMPILE   = arm-linux-gnueabihf-
[366]INSTALL_MOD_PATH = out

分别是指定架构,交叉编译器,MOD安装位置。

如果涉及到多个编译链版本,可以不用写入环境变量,在这里直接绝对路径指定。

[365]CROSS_COMPILE   = /opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-


四、编译linux源码


1、然后开始编译

cd linux
make licheepi_zero_defconfig
make menuconfig   #一般不用修改,需要时单独改
make -j16
make  -j16 modules #编译模块
make -j16 modules_install INSTALL_MOD_PATH=out #安装模块
make dtbs #编译设备树

上述make -j16骤报错可参考 4、问题描述及解决办法

2、编译完成后,zImage在arch/arm/boot/下,驱动模块在out/lib下,设备树在arch/arm/boot/dts下。

3、后面我们要使用zImage,sun8i-v3s-licheepi-zero-dock.dtb、sun8i-v3s-licheepi-zero-dock.dts、sun8i-v3s-licheepi-zero.dtb、sun8i-v3s-licheepi-zero.dts文件

4、问题描述及解决办法:

问题描述:

执行make -j16时报如下错误

/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x20): multiple definition of `yylloc’; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here

collect2: error: ld returned 1 exit status

make[1]: *** [scripts/Makefile.host:99:scripts/dtc/dtc] 错误 1

make: *** [Makefile:1280:scripts_dtc] 错误 2

make: *** 正在等待未完成的任务…

解决办法:

vim scripts/dtc/dtc-parser.tab.h
修改extern YYLTYPE yylloc 为yyloc
vim scripts/dtc/dtc-lexer.l
修改YYLTYPE yylloc 为 extern XXX yylloc

scripts/dtc/dtc-parser.tab.h

scripts/dtc/dtc-lexer.l


目录
相关文章
|
8月前
|
Linux 编译器 C语言
《Linux从练气到飞升》No.05 Linux编译器gcc/g++的使用及编译过程 【云边有个小卖部】上新
《Linux从练气到飞升》No.05 Linux编译器gcc/g++的使用及编译过程 【云边有个小卖部】上新
172 0
荔枝派Zero(全志V3S)运行Qt5程序
本文重新配置 buildroot,利用 buildroot 重新交叉编译 Qt,编译完成后将编译产生的可执行文件拷贝到 SD 卡,板子上电后跑到文件系统下再手动运行。
212 0
|
8月前
|
NoSQL IDE Linux
《Linux从练气到飞升》No.09 Linux调试器-gdb使用
《Linux从练气到飞升》No.09 Linux调试器-gdb使用
63 0
《Linux从练气到飞升》No.09 Linux调试器-gdb使用
|
8月前
|
存储 Unix Linux
《Linux从练气到飞升》No.01 Linux常用指令(二)
《Linux从练气到飞升》No.01 Linux常用指令(二)
68 0
|
8月前
|
人工智能 安全 Unix
《Linux从练气到飞升》No.01 Linux常用指令(一)
《Linux从练气到飞升》No.01 Linux常用指令(一)
62 0
|
Linux Windows
荔枝派Zero(全志V3S)驱动开发之USB摄像头 2
荔枝派Zero(全志V3S)驱动开发之USB摄像头
184 0
|
Ubuntu Linux
荔枝派Zero(全志V3S)驱动开发之USB摄像头 1
荔枝派Zero(全志V3S)驱动开发之USB摄像头
189 0
|
存储 Ubuntu Linux
荔枝派Zero(全志V3S)驱动开发之hello驱动程序
字符设备驱动是占用篇幅最大的一类驱动,因为字符设备最多,从最简单的点灯到 I2C、SPI、音频等都属于字符设备驱动的类型。
223 1
|
Linux 编译器 调度
荔枝派Zero(全志V3S)编译rootfs
rootfs翻译过来就是根文件系统。顾名思义,它属于文件系统范畴,文件系统的作用就是用来管理、储存文件的。文件的概念对于linux来说很重要,不是有一句话叫”一切皆文件“,Linux的一切行为与操作都反映在文件上。
469 0
|
编译器 Linux Python
荔枝派Zero(全志V3S)编译Uboot及配置
本文讲述了如何编译uboot并进行配置,对编译过程中遇到的问题进行解决,此外还对uboot的结构进行了简介
606 0