一、测试步骤

1. 下载附件中的压缩包speccpu2006.tar.gz,在终端中输入:
$tar xzvf speccpu2006.tar.gz –C /home > /dev/null


2. 继续执行如下命令:
$ cd /home/speccpu2006/tools/src/perl-5.8.7/ext/IPC/SysV
修改SysV.xs文件,注释 #include <asm/page.h>这一行


3. 执行如下命令:
$ cd /home/speccpu2006
$ sudo ./install.sh
在弹出的提示信息中,选择yes,后回车


4. 执行如下命令:
$ sudo . ./shrc
$ sudo apt-get install libbz2-dev
$ sudo cp /usr/lib/aarch64-linux-gnu/libbz2.so /usr/lib/aarch64-linux-gnu/libbz2.so.0
$ sudo runspec -V


5. 选择相应测试文件进行测试:
arm平台:
$runspec –c arm64.cfg -r 1 -n 1 all
$runspec –c arm64.cfg -r 64 -n 1 all
x86_64平台:
$runspec –c x86.cfg -r 1 -n 1 all
$runspec –c x86.cfg -r 64 -n 1 all


6. 查看测试结果,结果存放在/home/spec2006/result中

二、执行中遇到的问题

===================================================================

1.×出现如下错误提示glob/glob.c:xxx:  undefined  reference  to  `__alloca'`×

===================================================================

错误原因:

glibc2.7引起

解决方法:

修改 spccpu目录下的

 /home/speccpu/speccpu2006-v1.0.1/tools/src/make-3.80/glob/glob/glob.c
 
  1. // #if !defined __alloca && !defined __GNU_LIBRARY__

  2. # ifdef __GNUC__

  3. # undef alloca

  4. # define alloca(n) __builtin_alloca (n)

  5. # else /* Not GCC. */

  6. # ifdef HAVE_ALLOCA_H

  7. # include <alloca.h>

  8. # else /* Not HAVE_ALLOCA_H. */

  9. # ifndef _AIX

  10. # ifdef WINDOWS32

  11. # include <malloc.h>

  12. # else

  13. extern char *alloca ();

  14. # endif /* WINDOWS32 */

  15. # endif /* Not _AIX. */

  16. # endif /* sparc or HAVE_ALLOCA_H. */

  17. # endif /* GCC. */

  18. # define __alloca alloca

  19. // #endif

报错具体信息

===================================================================

2.×出现如下错误提示: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的代码部分,做如下修改:
    修改前:

 
  1. LD_LIBRARY_PATH=`pwd`

  2. DYLD_LIBRARY_PATH=`pwd`

  3. export LD_LIBRARY_PATH DYLD_LIBRARY_PATH

  4. ./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"

    修改后:

 
  1. LD_LIBRARY_PATH=`pwd`

  2. DYLD_LIBRARY_PATH=`pwd`

  3. ./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"

===================================================================

3.×出现如下错误提示:Udefined reference to pow×

===================================================================

错误原因:

编译perl测试程序时,链接数学库错误

解决方法:

在上述./Configure 前加上

export PERLFLAGS="-A libs=-lm -A libs=-ldl"

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐