sysbench下载与交叉编译
简介
sysbench是一个开源的多线程性能测试工具,广泛用于评估系统、数据库和硬件的性能。它支持多种测试模式,如 CPU、内存、磁盘 I/O 和数据库基准测试等。
下载
git clone https://gitee.com/cn-loongson/sysbench.git
这里使用国内的源,github上也有,不过有时候会下载不下来或下载很慢。
编译
cd sysbench/
./autogen.sh
报错:
autoreconf: running: /usr/bin/autoconf
configure.ac:61: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
解决方法:
apt-get install libtool
./configure --build=aarch64-unknown-linux-gnu --without-mysql --without-pgsql
配置可以根据自己的测试需求进行配置,配置脚本执行报错的话,只需要安装对应的库或者工具即可
上命令执行完,打印以下信息:
===============================================================================
sysbench version : 1.1.0-5657d59
CC : gcc
CFLAGS : -O3 -funroll-loops -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Wno-format-zero-length -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -Wvla -pthread
CPPFLAGS : -D_GNU_SOURCE -DCK_MD_CACHELINE=128 -I$(top_srcdir)/src -I$(abs_top_builddir)/third_party/luajit/inc -I$(abs_top_builddir)/third_party/concurrency_kit/include
LDFLAGS :
LIBS : -lm
prefix : /usr/local
bindir : ${prefix}/bin
libexecdir : ${prefix}/libexec
mandir : ${prefix}/share/man
datadir : ${prefix}/share
MySQL support : no
PostgreSQL support : no
LuaJIT : bundled
LUAJIT_CFLAGS : -I$(abs_top_builddir)/third_party/luajit/inc
LUAJIT_LIBS : $(abs_top_builddir)/third_party/luajit/lib/libluajit-5.1.a -ldl
LUAJIT_LDFLAGS : -rdynamic
Concurrency Kit : bundled
CK_CFLAGS : -I$(abs_top_builddir)/third_party/concurrency_kit/include
CK_LIBS : $(abs_top_builddir)/third_party/concurrency_kit/lib/libck.a
configure flags :
===============================================================================
make
编译完成后,生成的可执行文件在/src文件下
file src/sysbench
src/sysbench: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=3adb0c4da4117bf6b5cb973fe51ef2883dee634c, not stripped
测试
将可执行文件 sysbench push到目标设备中测试。
遗留问题
/bin/sh: ./sysbench: not executable: 64-bit ELF file
原因是:
file sysbench
sysbench: ELF shared object, 64-bit LSB x86-64, dynamic (/lib64/ld-linux-x86-64.so.2), BuildID=3adb0c4da4117bf6b5cb973fe51ef2883dee634c, not stripped
使用交叉编译
CFLAGS="-static" LDFLAGS="-static" ./configure --host=aarch64-linux-gnu --without-mysql --without-pgsql --disable-shared --enable-static
make
解决编译问题后,编译出的sysbench,仍是动态链接的
file sysbench
sysbench: ELF shared object, 64-bit LSB arm64, dynamic (/lib/ld-linux-aarch64.so.1), BuildID=5ff93006a5f48209a28a7d2708ff7286b2be74bb, not stripped
不知道原因是啥?