0x00前言

这里笔者记录了riscv-elf的编译方式,以供OpenHarmony下的某些特殊的芯片编译的编译链的搭建。

阅读本文,您可能需要掌握的知识:

技能熟练度
shell熟悉
make编译链熟悉
git熟悉

0x10 前期准备

准备环境

安装一些基础的编译程序:

sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

这里需要注意到是,这些都是针对当前的芯片架构实现的,而不是交叉编译的,正是需要编译一个交叉编译的编译链。

下载代码

git clone github.com/riscv-collab/riscv-gnu-toolchain.git

这里需要注意的是,这里下载的只是一个总仓库,下面还需要autoconf进行编译时git再去拖下一些特别的库

0x20 编译

上面就准备好了,是不是特别简单方便?

编译前准备

编译前准备也很简单。./configure --disable-linux --prefix=/opt/riscv --with-arch=rv32i

但是需要注意,必须要选择disable-linux,因为现在默认选择的是linux下的编译链,所以如果不选择就会输出关于linux的相关编译程序,选择disable才会输出elf-none的输出。这里因为基本上绝大多数使用LiteOS的CPU都是32位及以下的总线容量,所以选择了RV32I

下面就是特别的编译选项(选择自wiki):

image20211219220920282.png

设置完成之后,autoconf会自动实现初始化环境,随后就可以实现make。

sudo make linux -j12

因为笔者有12个核心参与编译,所以打开了12个线程,因为第一次编译,需要使用git拖下来很多库,所以如果不开多线程的话就会卡在某个位置上。

等待大概10分钟左右也就好了。

image20211219223340479.png
PS:笔者之前成功一次,但是第二次准备收集素材结果死活拖不下来仓库,所以就暂时拿这张图充数了。最后也是会成功的。

编译后处理

echo "PATH=$PATH:/opt/riscv/bin" >> ~/.bashrc
source ~/.bashrc

映射到当前的环境内即可。

下面就可以直接使用riscv32-unknown-elf-gcc进行调用了

0x30 总结

总体编译还是十分简单的,但是因为github仓库太难拉取,反倒可能出现几次因为这个的失败,但是如果选择比较好的代理,则几乎没有什么问题。


标题: 记:Riscv-elf的相关编译实现
作者:GreenDream
地址:HTTPS://greendreamer.work/articles/2021/12/22/1640183143623.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!