RISCV编译32位仿真环境

具体参考https://blog.csdn.net/hh199203/article/details/113930468

只是在编译riscv-gnu-toolchain的时候改成了32位

cd riscv-gnu-toolchain  #克隆完成进入克隆下来的目录
mkdir build; cd build   #创建并进入build文件夹
../configure --prefix=$RISCV --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32  #检查环境并生成当前环境使用的Makefile
make   #注意是make而不是make linux, make编译得到是我们最常用的unknown-elf-gcc等工具链,而make linux则是unknown-linux-gnu-gcc,整个make大概需要一个小时

同理,编译riscv-fesvr时改成32位,似乎没什么用?

cd riscv-fesvr  #克隆完成进入克隆下来的目录
mkdir build && cd build   #创建并进入build文件夹
../configure --prefix=$RISCV --target=riscv32-unknown-elf  #检查环境并生成当前环境使用的Makefile,如果需要指定编译链的输出目录,就可以把R I S C V 改 为 相 应 目 录 或 者 配 置 RISCV改为相应目录或者配置RISCV改为相应目录或者配置RISCV环境变量为相应的目录。如果没有配置就默认为/bin --target=为你的编译链的路径
[sudo] make install  #编译安装,[sudo]代表sudo可选,安装输出目录的读写全写的实际情况选择

riscv-tools中build-spike-pk.sh改成32位编译器后编译

cd riscv-tools
su
./build-spike-pk.sh

编译完成后spike /opt/riscv/riscv32-unknown-elf/bin/pk riscv_hello执行程序报错

ubuntu:~/test$ spike /opt/riscv/riscv32-unknown-elf/bin/pk riscv_hello
terminate called after throwing an instance of 'trap_load_access_fault'

还没解决...

用64位版本编译的没问题,可以正常打印hello world

各种版本gcc工具链编译与安装参考https://blog.csdn.net/weiqi7777/article/details/88045720

--enable-multilib参数加了后,支持的库查看./riscv64-unknown-elf-gcc --print-multi-lib

riscv64-unknown-elf-gcc -march=rv32imc -mabi=ilp32 也可以编译出32位程序

https://my.oschina.net/u/4239621/blog/5130608

32位编译参考https://github.com/riscv/riscv-tools/issues/294

Running 64- and 32-bit RISC-V Linux on QEMU https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html

你可能感兴趣的:(RISCV)