NSCSCC(龙芯杯)提供的龙芯编译环境。

下载安装

下载龙芯提供的编译环境配置压缩包 [gcc-4.3-ls232.tar.gz],终端下进入 gcc-4.3-ls232.tar.gz 所在目录,将环境解压至根目录。

1
sudo tar -zxvf gcc-4.3-ls232.tar.gz -C /

向 .bashrc 文件添加路径。

1
echo "export PATH=/opt/gcc-4.3-ls232/bin:$PATH" >> ~/.bashrc

对于 64 位系统,还要安装 32 位环境支持。

1
sudo apt-get install lsb-core

CPU设计实战 书上还要求安装 lib32ncurses-dev,装的时候报 Unable to locate package,去查了一下发现 Ubuntu 下根本没这个包,只能安装 lib32ncurses5-dev,但似乎安装与否都不影响。

输入 mipsel-linux-gcc -v 命令查看版本号,验证安装成功。

WSL 环境下编译测试程序

如果用 WSL2 作为 Linux 环境编译测试程序(测试程序放在 Windows 目录下,在 Linux 终端中通过 /mnt 目录访问 Windows 文件系统),会产生如下报错:

1
Value too large for defined data type

原因是目标文件 inode 值过大,超过 32 位系统的识别范围。可以 ls -li 自行验证一下。

最后,最简单的办法最有效。把文件拷贝到 Linux 目录下,inode 就变得正常了,make 好以后再拷贝到 Windows 目录即可。

折腾半天就是为了 gs132 跑出的 trace 文件和 ram_ip 初始化的 inst_ram.coe 文件。以后有时间可能会整理一下发个仓库,避免重复劳动。

References

  1. unable-to-locate-package-error-ubuntu
  2. packages.ubuntu.com
  3. 清华uCore实验-移植MIPS软核
  4. mipsel-linux-gcc工具链搭建
  5. GCC编译“Value too large for defined data type”错误解决办法
  6. 解决Value too large for defined data type问题
  7. Linux下出现Value too large for defined data type的报错
  8. inode爆炸问题解决
  9. gcc编译参数概述