皋陶 发表于 2020-8-23 11:30:22

RISC-V编译环境搭建,踩坑记录

本帖最后由 皋陶 于 2020-8-26 11:16 编辑

踩坑记录(未成功,不建议使用):
$ gitclonehttps://github.com/riscv/riscv-tools.git,执行该命令会在当前目录下下载得到一个名为riscv-tools的文件夹,其中内容如图a所示,共十五个文件和文件夹,但其中以riscv为前缀的文件夹是空文件夹。
根据网上资料,输入 gitsubmoduleupdate--init--recursive会继续下载空文件夹中的内容,但执行该命令后无反应。
​图a
还有一种通过执行图a中的build.sh来安装组件的方法,这种方法会把所有的组件全部安装,但也未执行成功,如下图所示。

注1: 图a中,以riscv为前缀的7个文件夹都是一个个独立的组件,都有各自的用途,下面的方法只安装了riscv-gnu-toolchain。在这个文件夹中的内容涉及最基本也最重要的一些工具,如编译、调试工具等,所以只装这个也够了。另几个组件的安装方法也类似,主要步骤:1.执行文件夹中的configure文件(会生成makefile文件),2.sudo make linux开始编译(如果出错则解决相关问题),最核心的就是这两步。但是命令行中执行configure文件时附带什么参数,目前了解的不够。
注2:如果目标机为嵌入式设备,还需安装riscv-pk,这个组件有打包功能,即把bootloader( riscv-pk中自带伯克利大学开发的bootloader,缩写为bbl)、内核镜像、根文件系统、busybox等等打包成一个bin文件。另外还有一个带qemu字样的组件(具体名字记不住了,也可能就包含在上述7个组件中的某一个内),是一个模拟运行环境,如果你编译出来的bin文件在qemu中都无法正常启动、显示,赶紧查原因吧,基本上烧录到板子上也运行不了。无论桌面还是嵌入式开发,qemu组件都是可选的,而对嵌入式开发riscv-pk必须要有,网上有相关安装使用教程(能成功安装并使用,我试过,不过步骤没记录下来),大家有需要就百度下。                                     #######################请使用以下方法##########################
具体步骤(建议新建一个文件夹,在这个文件夹中进行安装):
步骤1:$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain,执行该命令会在当前目录下载一个riscv-gnu-toolchain文件夹及其内容(红色部分可用riscv-fesvr,riscv-pk等替换,可下载其余六个组件)。下载完成后(该文件夹有2~3个Gb大小,另外几个组件很小,十几Mb),cd进该文件夹:$ cdriscv-gnu-toolchain 。
步骤2:$ ./configure--prefix=/opt/riscv64-linux--with-arch=rv64imafdc--with-abi=xxx--enable-linux。绿色部分你可以根据个人习惯来自定义,该参数作用:会在此处存放最终编译好的工具(一些可执行命令),红色部分用lp64,lp64d,lp64f之一替换掉,具体区别不清楚,我用的lp64d。本步骤会生成用于编译的makefile文件,且用于64位硬件和linux系统,用于32位硬件或者不带操作系统的裸机开发请百度相关参数设置。
步骤3:$ sudo apt-get install libexpat1-dev,安装一个包,不然编译过程中很可能报错:error: expat is missing or unusable。
步骤4:$ sudomakelinux,开始编译(比较费时)。注意要加sudo或以root权限运行,不然会报错。
编译成功后在/opt/riscv64-linux ( 该路径由步骤2中的 --prefix=/opt/riscv64-linux 决定,你可以设置为其它路径) 下会有相关文件夹等,如图b所示。
​                                                                                          图b
/opt/riscv64-linux/bin下是最重要的一些可执行文件,如图c。
​                                                                                                 图c
步骤5:$ gedit~/.bashrc,设置环境变量,在bashrc文件尾部添加export PATH=$PATH:工具链安装路径/bin。红色部分用具体的路径代替,本例中为/opt/riscv64-linux(由步骤2中的 --prefix=/opt/riscv64-linux决定),再source一下,应该就能用了。
       还有,要下载riscv版的linux内核源码进行编译,不然编译中会报error,虽然不确定出错原因何在,但建议如此,至少用riscv工具链编译riscv版的linux内核源码没一点问题而编译其它版本的就报错。本篇完,感谢关注:RISC-V单片机中文网
页: [1]
查看完整版本: RISC-V编译环境搭建,踩坑记录