由于兼容性问题SPEC CPU2006中自带的install.sh运行不了,需要重新编译源代码,进入/tool/src目录,运行buildtools文件。
遇到的问题
- lib/getline.h:31:1: error: conflicting types for 'getline’
错误原因:函数冲突,stdio.h已经定义了getline,SPEC CPU2006也定义了。
解决方案:
打开./tools/src/specmd5sum/md5sum.c,注释掉getline.h头文件(38行)。 - error building Perl
错误原因:高版本Linux内核删除了asm/page.h,配置perl时需要用到数学库。
解决方案:
打开./tools/src/perl-5.8.8/ext/IPC/SysV/SysV.xs文件,注释asm/page.h头文件(7行)
打开./tools/src/buildtools文件,在编译perl的代码部分(第333行和334行)做如下修改
修改前
修改后LD_LIBRARY_PATH=`pwd` DYLD_LIBRARY_PATH=`pwd` export LD_LIBRARY_PATH DYLD_LIBRARY_PATH ./Configure -dOes -Ud_flock $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef -A ldflags=-L${INSTALLDIR}/lib -A ccflags=-I${INSTALLDIR}/include -Ui_db -Ui_gdbm -Ui_ndbm -Ui_dbm -Uuse5005threads ; testordie "error configuring perl"
LD_LIBRARY_PATH=`pwd` DYLD_LIBRARY_PATH=`pwd` ./Configure -Dcc="gcc -lm" -Dlibpth='/usr/local/lib64 /lib64 /usr/lib64' -dOes -Ud_flock $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef -A ldflags=-L${INSTALLDIR}/lib -A ccflags=-I${INSTALLDIR}/include -Ui_db -Ui_gdbm -Ui_ndbm -Ui_dbm -Uuse5005threads ; testordie "error configuring perl"
- Undefined reference to pow
错误原因:编译perl测试程序时,连接数学库错误。
解决方案:
在上面第2个问题的./Configure前加上export PERLFLAGS="-A libs=-lm -A libs=-ldl"
- You haven’t done a “make depend” yet!
错误原因:perl makedepend时调用的/bin/sh连接到dash shell,但是Debian和Ubuntu系统默认的dash有BUG。(服气。。。。 )
解决方案:sudo rm /bin/sh sudo ln –s /bin/bash /bin/sh