背景
因为spec2017不自带riscv64架构的tools,我们如果要使用需要自己手动编译工具。但过程不是./buildtools 就简单完成的特将记录踩坑过程。
使用方法
将spec2017.iso 挂在至/mnt或其他空闲目录。
在/mnt/install_archives/
目录下会有tools-src.tar
类似名字的压缩包,这就是制作tools的源码。
安装
在x86工作机的操作:
在/mnt目录 ./install.sh 输入一个空目录表示安装到此目录。
将上文的 tools-src.tar
解压至$install/tools
然后将整个$install
打包拷贝至riscv64板子。
build tool
因为x86上有现成tool 所以可以安装成功,到riscv64上需要重新buildtool。
首先 cd $install/tools/tools/src
直接执行./buildtools
undefined reference to `__alloca'
解决方法
去make/glob/glob.c 中修改
undefined reference to `__stat'
这个错误解决方法一样Can't locate test_driver.pl
再次运行./buildtools
发现该目录下有这个文件,就是搜索路径不对
解决方法
里面说了好几种
PERL_USE_UNSAFE_INC=1
require "test_driver.pl";
require "config-flags.pm" 把这两行前面加个`./`
这两种办法都会导致后面的test检查脚本通过不了,最直接的办法就是把当前目录加进lib
-
configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
正如他所说的。
export FORCE_UNSAFE_CONFIGURE=1
-
出现error building Perl错误
解决方法:修改/home/ubuntu/cpu2006/tools/src/perl-5.12.3/Configure文件,将其中所有的
case "$gccversion" in
1*)
修改为
case "$gccversion" in
1.*)
- 2020年以后跑test会出错,修改TimeDate-2.30/t/getdate.t
require Time::Local;
-my $offset = Time::Local::timegm(0,0,0,1,0,70);
+my $offset = Time::Local::timegm(0,0,0,1,0,1970);