一、下载lmbench
www.bitmover.com/lmbench 官网下载,http://www.bitmover.com/lmbench/lmbench3.tar.gz
我没有下载下来,找的别人的百度云下载
链接: https://pan.baidu.com/s/1tGo1clCqY-jQPN8G1eWSsg 提取码: f6jd
二、修改makefile
修改三个文件
2.1 修改scripts/os
在最后一行echo $OS前,增加
OS=arm-linux (增加行)
echo $OS
2.2 修改scripts/compiler
在最后一行echo $CC前,增加
CC=arm-linux-gnueabihf-gcc(增加行)
echo $CC
2.3 修改scripts/build
将LDLIBS=lm修改为LDLIBS="-static -lm"
三、编译
直接make,编译完成后在bin目录下生成stream可执行文件。
四、运行出错处理
stream在我们的环境中运行,直接会报Segmentation fault,无其他任何打印。
通过gdb发现无任何堆栈信息,只是报错:Starting program: /mnt/test/zhixin_stream/stream
During startup program terminated with signal SIGSEGV, Segmentation fault.
在网络上查也没有查到啥有用信息,最后通过查看stream.c的源码发现,STREAM_ARRAY_SIZE参数过大,导致申请的数组大小已经大于内存大小。
#ifndef STREAM_ARRAY_SIZE
# define STREAM_ARRAY_SIZE 10000000
#endif
static STREAM_TYPE a[STREAM_ARRAY_SIZE + OFFSET],
系统起来以后的剩余内存只有128M,之前STREAM_ARRAY_SIZE大小为接近1G,,由此导致在程序加载的时候超过运行内存大小而出现段错误。修改STREAM_ARRAY_SIZE大小为原来的十分之一,问题解决。