RISC-V 编译环境搭建

RISC-V编译环境搭建

riscv-gnu-toolchain是RISCV的交叉编译工具链,在GitHub上的地址为:https://github.com/riscv-collab/riscv-gnu-toolchain,在国内Gitee上也有链接,每天同步一次:https://gitee.com/mirrors/riscv-gnu-toolchain。

第一步就是下载交叉编译工具链:

git clone  git@github.com:riscv/riscv-gnu-toolchain.git
cdriscv-gnu-toolchain
git submodule update --init --recursive
第二步下载需要的库文件:(我是ubuntu的环境)
sudoapt-getinstallautoconfautomakeautotools-devcurllibmpc-devlibmpfr-devlibgmp-devgawkbuild-essentialbisonflextexinfogperflibtoolpatchutilsbczlib1g-devlibexpat-dev
第三步设置环境变量:
export RISCV="your path"//path指你自己下载的工具链的路径
export PATH=$PATH:$RISCV/bin


source/etc/profile//可以让关闭当前终端之后,设置的环境变量仍然有效
第四步进行编译:
mkdirbuild//新建一个文件夹,让整个目录结构更清晰一点
cd build


//生成32位的编译工具   riscv32-unknown-elf-***
../configure --prefix=$RISCV --with-arch=rv32gc --with-abi=ilp32d
make -j4


//64位的  riscv64-unknown-elf-***
../configure --prefix=$RISCV
make -j4




//64位的linux-gnu-gcc版本
../configure --prefix=$RISCV
make linux  -j4

以上按位数分可以编译为32位和64位两种,另外就是都可以编译为elf版本和linux版本。


这个时候,你的交叉编译工具链就做好了。那就写个hello world来测试下吧。

 

928aeaee-43e8-11ef-b8af-92fbcf53809c.png

正常编译出来hello.o了。

因为是在ubuntu的环境下,我们是不能直接执行这个a.o的,因为他是riscv的交叉编译工具编译出来的。下面就安装一下qemu这个运行环境吧。

git clone https://git.qemu.org/git/qemu.git
cd qemu
git submodule init
git submodule update --recursive
riscv的qemu有两种:

 

用户模式,可以运行基于riscv指令集编译的程序文件(target-list=riscv32-linux-user,target-list=riscv64-linux-user)

镜像模拟器,可以运行基于riscv指令集编译的linux镜像(target-list=riscv32-softmmu,target-list=riscv64-softmmu)

因为我上面交叉编译工具链就是32位的,所以qemu也使用32位的,这里要对应上,不然在qemu里面运行编译好的结果的会报错的。

 

cd qemu
./configure--target-list=riscv32-linux-user
make-j4
这个在编译的时候可能会报错,少库啥的。 比如:
ERROR:CannotfindNinja
//报上面这个错误可以通过 apt-get install ninja-build 解决


ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
//报上面这个错误可以通过 apt-get install libglib2.0-dev 解决
总之一个原则:少啥装啥。 下图就是编译好的,注意里面的路径,我们需要qemu-riscv32这个去执行工具链编译好的二进制文件。这里可以像上面一样把他也放进环境变量里面,我们以后用起来会比较方便,不用每次都写qemu-riscv32的路径了。

 

92a7cc4a-43e8-11ef-b8af-92fbcf53809c.png

最后就来看一下执行结果吧:

92ba6314-43e8-11ef-b8af-92fbcf53809c.png

至此,RISCV的编译和运行环境就弄好了。

posted on   zxddesk  阅读(372)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示