大连网站设计费用,wordpress 微软雅黑,乐山建设网站,怎么查看网站的ftp1. 前言
risc-v是一个非常有潜力的指令集框架#xff0c;最近对其产生了浓厚的兴趣#xff0c;由于之前对于这方面的知识储备很少#xff0c;在加上网上的教程都是点到为止#xff0c;所以安装过程异常曲折。好在最后一步一步积累摸索#xff0c;终于利用源码安装完成。看…
1. 前言
risc-v是一个非常有潜力的指令集框架最近对其产生了浓厚的兴趣由于之前对于这方面的知识储备很少在加上网上的教程都是点到为止所以安装过程异常曲折。好在最后一步一步积累摸索终于利用源码安装完成。看到此文章的同学相信你也对RISC-V感兴趣并且在安装过程也遇到了一些问题希望这篇文章能够帮到你。 本文假设你已经安装了ubuntu20.04或者Ubuntu18.04我在Ubuntu18.04和Ubuntu20.04都安装成功过Ubuntu18.04默认是python3.6所以在安装qemu的时候需要升级python,并安装ninga. 本文使用Ubuntu20.04以源码的方式安装RISC-V和qemu并测试其正常工作。
2. 安装RISC-V
2.1 下载risc-v的源码
risc-v地址为GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCCGNU toolchain for RISC-V, including GCC. Contribute to riscv-collab/riscv-gnu-toolchain development by creating an account on GitHub.https://github.com/riscv-collab/riscv-gnu-toolchain
下载后会有目录riscv-gnu-toolchain目录,该目录不大使用GitHub可以很快下载完成。 下载命令为:git clone gitgithub.com:riscv-collab/riscv-gnu-toolchain.git 先不着急使用configure安装,因为安装过程会从github下载gcc,newlib等子库速度非常慢容易中断。继续看第二步下载子模块 2.2 子模块下载
使用浏览器打开https://github.com/riscv-collab/riscv-gnu-toolchain 然后双击.gitmodules可以看到每个子模块的路径和分支。根据绿色部分的名字在国内的gitee上搜索找到对应的库路径即可。cd riscv-gnu-toolchain 这个路径然后git clone gitee路径。 这里要注意有的库名字和clone后的目录名字相同有的不相同不相同库的在切换到正确的分支后须修改为子目录名称。例如binutils库克隆后的目录为binutils-gdb, 需要先进入binutils-gdb目录使用git checkout切换到binutils-2_40-branch分支。然后删除原有的binutils目录在使用mv命令修改为binutils-gdb目录为binutils。 如gcc目录同gcc库名字相同直接在gitee上找到库路径后克隆gcc库后切换到对应的分支即可。注意子模块的目录都是空使用clone之后都不为空可以用来检查是否有遗漏。操作一定要小心不然configure的时候会卡住。如果编译过程卡住2分钟不要犹豫直接停止编译检查子库是否下载正确。纠正后清空build目录里面的内容重新编译。 下面是自己从gitee上找的对应模块直接复制url的内容按删除操作一个一个clone修改即可。当然你也可以把内容复制到riscv-gnu-toolchain目录里面的.gitmodules文件里面然后更新子模块配置让其自动下载这部分有兴趣可以自己研究我这边尝试了一把卡住了没成功。
[submodule binutils]path binutilsurl https://gitee.com/keaide/binutils-gdb.gitbranch binutils-2_40-branch
[submodule gcc]path gccurl https://gitee.com/mirrors/gcc.gitbranch releases/gcc-13
[submodule glibc]path glibcurl https://gitee.com/rtlhq/glibc.git
[submodule dejagnu]path dejagnuurl https://gitee.com/nwpu-ercesi/dejagnu.gitbranch master
[submodule newlib]path newliburl https://gitee.com/mirrors/newlib-cygwin.gitbranch master
[submodule gdb]path gdburl https://gitee.com/keaide/binutils-gdb.gitbranch gdb-13-branch
[submodule qemu]path qemuurl https://gitee.com/liwg06/qemu.git
[submodule musl]path muslurl https://gitee.com/nwpu-ercesi/musl.gitbranch master
[submodule spike]path spikeurl https://gitee.com/houxibiao/riscv-isa-sim.gitbranch master
[submodule pk]path pkurl https://gitee.com/houxibiao/riscv-pk.gitbranch master
[submodule llvm]path llvmurl https://gitee.com/mirrors/LLVM.gitbranch release/17.x
2.3 RISC-V编译
1. 正确执行2.1和2.2步骤后可以编译安装了按照官方文档先执行如下命令安装库依赖
$ sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
2. 在/opt目录下创建riscv目录并修改权限为777 【很重要】
sudo mkdir /opt/riscv
sudo chmod 777 /opt/riscv
3. 在riscv-gnu-toolchain目录创建build目录然后执行如下命令
cd riscv-gnu-toolchain
mkdir build
cd build
../configure --prefix/opt/riscv --enable-multilib
make linux -j 4
这里使用了兼容32和64位的模式编译其它模式也是可以的按照github官方文档说明即可。执行上述命令估计要40分钟左右才能编译完成。看到如下执行完成没有卡住算是编译完成 此时/opt/riscv目录如下 2.4. 配置RISC-V环境变量
1. 编辑~/.bashrc
vim ~/.bashrc
2. 在文件~/.bashrc末尾写入如下内容
export RISCV/opt/riscv
export PATH$PATH:$RISCV/bin
3. 使配置文件生效
source ~/.bashrc
3. 测试RISC-V
1. 创建一个hello.c文件内容如下
#includestdio.h
int main(){printf(%s,hello RISCV!);return 1;
}2. 使用risc-v的gcc编译 编译无报错说明成功。编译后是无法执行的需要安装qemu才能执行
4. 安装QEMU
进入riscv-gnu-toolchain/qemu里面会发现这里面也有.gitmodules, 这里面的下载路径下载速度还行直接使用如下命令安装即可如果卡住就按照risc-v的方法手动下载qemu的子目录即可。最新的qemu是8.1.5我这边使用6.1稳定版 qemu的子模块目录注意带roms的模块需要cd到roms路径克隆不带roms切换到qemu目录克隆带test和ui路径需要切换到test和ui目录克隆。都使用默认的master分支即可。
[submodule roms/seabios]path roms/seabiosurl https://gitlab.com/qemu-project/seabios.git/
[submodule roms/SLOF]path roms/SLOFurl https://gitlab.com/qemu-project/SLOF.git
[submodule roms/ipxe]path roms/ipxeurl https://gitlab.com/qemu-project/ipxe.git
[submodule roms/openbios]path roms/openbiosurl https://gitlab.com/qemu-project/openbios.git
[submodule roms/qemu-palcode]path roms/qemu-palcodeurl https://gitlab.com/qemu-project/qemu-palcode.git
[submodule roms/sgabios]path roms/sgabiosurl https://gitlab.com/qemu-project/sgabios.git
[submodule dtc]path dtcurl https://gitlab.com/qemu-project/dtc.git
[submodule roms/u-boot]path roms/u-booturl https://gitlab.com/qemu-project/u-boot.git
[submodule roms/skiboot]path roms/skibooturl https://gitlab.com/qemu-project/skiboot.git
[submodule roms/QemuMacDrivers]path roms/QemuMacDriversurl https://gitlab.com/qemu-project/QemuMacDrivers.git
[submodule ui/keycodemapdb]path ui/keycodemapdburl https://gitlab.com/qemu-project/keycodemapdb.git
[submodule capstone]path capstoneurl https://gitlab.com/qemu-project/capstone.git
[submodule roms/seabios-hppa]path roms/seabios-hppaurl https://gitlab.com/qemu-project/seabios-hppa.git
[submodule roms/u-boot-sam460ex]path roms/u-boot-sam460exurl https://gitlab.com/qemu-project/u-boot-sam460ex.git
[submodule tests/fp/berkeley-testfloat-3]path tests/fp/berkeley-testfloat-3url https://gitlab.com/qemu-project/berkeley-testfloat-3.git
[submodule tests/fp/berkeley-softfloat-3]path tests/fp/berkeley-softfloat-3url https://gitlab.com/qemu-project/berkeley-softfloat-3.git
[submodule roms/edk2]path roms/edk2url https://gitlab.com/qemu-project/edk2.git
[submodule slirp]path slirpurl https://gitlab.com/qemu-project/libslirp.git
[submodule roms/opensbi]path roms/opensbiurl https://gitlab.com/qemu-project/opensbi.git
[submodule roms/qboot]path roms/qbooturl https://gitlab.com/qemu-project/qboot.git
[submodule meson]path mesonurl https://gitlab.com/qemu-project/meson.git
[submodule roms/vbootrom]path roms/vbootromurl https://gitlab.com/qemu-project/vbootrom.git
具体命令如下
1. 创建qemu目录存放编译后的二进制文件
sudo mkdir /opt/qemu
sudo chmod 777 /opt/qemu3. 执行如下命令,避免过程报错Dependency pixman-1 not found, tried pkgconfig和一些依赖错误 sudo apt-get install libpixman-1-devpip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple sphinx5.3.0# 还有一个python依赖没记录下来如果出现了执行pip3安装该库的命令即可
3. 进入riscv-gnu-toolchain/qemu创建build目录并编译编译耗时1小时左右出现下图即算编译成功
mkdir build
cd build
../configure --prefix/opt/qemu
make j 4
make install 4.参考2.4配置qemu的环境变量即可我这边最终的riscv和qemu的环境变量如下 其中.local/bin是安装python库的时候一个告警我手动添加的。应该不加也没事。
5. 测试QEMU用户模式
1.报错找不到链接库
使用qemu执行hello二进制文件报错找不到链接库 原因是qemu-riscv64会在/lib下搜索riscv64的动态链接而我们编译的riscv链接在/opt/riscv/sysroot里面。网上有直接copy到/lib下但是还有其他.so文件问题全部拷贝之后容易把系统搞崩溃我怀疑我的Ubuntu18.04就是这样高崩溃的。 2. 指定链接库路径执行 为了避免每次都需要手动执行动态链接库使用 qemu-riscv64 -h发现设置QEMU的目录动态链接路径即可 3. 配置默认动态链接路径: