已在ubuntu1404-x64、ubuntu1804-x64系统上测试通过。虚拟机使用vmware15版本。本教程编写日期2019年8月28日,大体步骤如下,随着时间推移rocket肯定会有更新和编译出错问题,可能就不完全适用于本教程,遇到编译错误就要见招拆招了!
sudo apt-get install vim git gcc g++ ssh lsb-core autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev
ubuntu1404版本自带的gcc版本是4.8,正是我们所需要的,如果你使用的1401,本步骤可直接跳过。
ubuntu1804的gcc版本是7.4,而我们需要gcc4.8版本,安装和切换步骤如下:
安装gcc和g++ 4.8版本:
sudo apt-get install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib
先查看一下目前gcc有几个版本:
ls /usr/bin/gcc*
根据版本信息更新gcc:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
执行下列命令输入编号进行切换:
sudo update-alternatives --config gcc
查看是否切换成功:
gcc -v
先查看一下目前g++有几个版本:
ls /usr/bin/g++*
g++更新:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/g++-7 50
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/g++-4.8 40
执行下列命令输入编号进行切换:
sudo update-alternatives --config g++
查看是否切换成功:
g++ -v
samba相当于windows的网络共享,可将linux硬盘挂载到windows,这样就可以将windows的文件拷贝到linux系统中了。
安装方法见我的另一篇博客:https://blog.csdn.net/qq153471503/article/details/79221047
安装方法见我的另一篇博客:https://blog.csdn.net/qq153471503/article/details/99673165
编译rocket-chips的vsim的时候需要用到vcs软件,该软件闭源,需另外安装。
安装方法见我的另一篇博客:https://blog.csdn.net/qq153471503/article/details/100134507
rocket-tools工具链很好编译,基本按照github上的步骤就能编译通过。
下载源代码:
git clone https://github.com/freechipsproject/rocket-tools
cd rocket-tools
下载子模块:
git submodule update --init --recursive
设置环境变量:
sudo gedit /etc/profile
加入以下内容(目录根据实际修改):
export RISCV=/home/hello/Install/rocket/rocket-tools/riscv-gnu-toolchain
export PATH=${RISCV}/bin:$PATH
export MAKEFLAGS="$MAKEFLAGS -jN"
-jN: N表示你电脑有几个CPU核心,可以通过命令 echo $(nproc) 获得
更新环境变量:
source /etc/profile
编译:
./build.sh
./build-rv32ima.sh (如果要编译32位工具链,请执行这个脚本).
编译rocket-chips相比rocket-tools就麻烦多了,尤其编译vsim的时候,会出现很多错误,这时候就需要见招拆招了
前提条件:
下载源代码:
git clone https://github.com/ucb-bar/rocket-chip.git
cd rocket-tools
下载子模块:
git submodule update --init
编译C模拟器:
cd emulator
make
编译VCS模拟器:
cd vsim
make
编译vsim遇到的问题:
问题1:vcs命令找到不到。VCS是闭源软件需要另外安装,如果安装了还是找不到,应该是环境变量配置问题。
问题2:libferser.so找不到,参考:https://github.com/chipsalliance/rocket-chip/pull/2055
问题3:undefined reference to `snpsCheckCallocFromGroupFunc’,参考:https://www.cnblogs.com/sunic/p/9899013.html
解决问题2和3的办法:修改vsim/Makefrag文件,修改成如下图所示
VCS = vcs -full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
$(RISCV)/lib/libfesvr.a
编辑hosts文件:
sudo vim /etc/hosts
加入以下两行:
151.101.185.194 github.global-ssl.fastly.net
192.30.253.112 github.com
重启网络:
Ubuntu:
sudo /etc/init.d/networking restart
CentOS:
service network restart
解决办法:换源。各个版本linux发行版换源方式可查看:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
结束。。。