收到非常多朋友的改进意见,代表芯片编译团队表示感谢,我们会不断改进不断努力。后续文章我们尽量多码字,尽量不采用拷屏,以利于交流。
原创帖,如有转发,请注明出处或联系撰稿人
RISC-V Tools编译安装三部曲之二
撰稿人:李浩
一、前言在上一期中我们已经完成了RISC-V GCC/Newlib Toolchain、GNU toolchain for RISC-V, ISA Simulator等工具的编译安装。在这一期中我们将尝试使用riscv64-unknown-linux-gnu-gcc来编译我们的linux内核。
不要忘了我们的环境变量:
$ exportTOP=/opt/RISCV
$ exportRISCV=$TOP/riscv
$ exportPATH=$PATH:$RISCV/bin
二、Building the Linux Kernel
1.获取Kernel Sources
我们终于准备好了引入Linux内核源代码了。从riscv-tools/riscv-gnu-toolchain目录中进行更改,并将riscv-linuxgit存储库克隆到以下目录:linux-4.15._xx_,其中xx表示当前修订的版本(截至2018年1月8日,它是“Linux 4.15-rc7”)。
$ cd $TOP
$ gitclone https://github.com/riscv/riscv-linux.gitLinux4.15-rc7
2.Configuring the Linux KernelLinux内核虽然是无限可配置的。但是,对于目前的开发状态,没有太多的设备或选项可以进行调整。但是,从默认配置开始,该配置应该与ISA模拟器一起工作。这里需要使用ARCH=来指定目标的体系架构,使用CROSS_COMPILE=来指定使用的交叉编译器的前缀(我们自然是使用前面装好的riscv64-unknown-linux-gnu-gcc)。
$ makeARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig
如果要编辑配置,可以使用基于文本的GUI(Ncurses)编辑配置:
$ make ARCH=riscv menuconfig
等你对配置感到满意的时候,就开始编译内核。注意在编译RISC-V内核时,必须在make的每次调用中指定ARCH=riscv和CROSS_COMPILE=。这一行也不例外。如果你想加快进程,可以通过参数-j [number]来启用多线程编译。
$ make -j16 ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu-
做到这一步,很恭喜了,你终于为RISC-V交叉编译了linux内核。然而,在我们启动它之前还有一些事情要处理。
这一期虽然短,但是做起来却很容易出错,如果你是一名新手的话,笔者希望你在读到这篇文章时能够去了解一下linux内核,make过程以及Makefile。这会对你很有帮助,如果你编译过程中出错,阅读这些资料会对你有所帮助。
下一期,我们将编译安装Busybox,到这才是完整的riscv-tools的安装,让我们下期见吧。
参考文献
[1] RISC-Vofficial network:https://riscv.org/software-tools/
[2]README of RISC-VGNU Compiler Toolchain:
https://github.com/riscv/riscv-gnu-toolchain
领取专属 10元无门槛券
私享最新 技术干货