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):
设置完成之后,autoconf会自动实现初始化环境,随后就可以实现make。
sudo make linux -j12
因为笔者有12个核心参与编译,所以打开了12个线程,因为第一次编译,需要使用git拖下来很多库,所以如果不开多线程的话就会卡在某个位置上。
等待大概10分钟左右也就好了。
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
Comments | 0 条评论