当前位置: 首页 > article >正文

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

不知道原因是啥?


http://www.kler.cn/a/297207.html

相关文章:

  • transforemr网络理解
  • 讲座笔记1
  • python_openCV_计算图片中的区域的黑色比例
  • 数据库课程 CMU15-445 2023 Fall Project-0 项目记录
  • Linux网络:应用层协议http/https
  • Flutter动画—涟漪效果
  • HTTP 协议的工作过程
  • 【Go - 拼接字符串】
  • CSOL如何高效防护UDP攻击
  • 手机录音怎么转换成mp3?3种方法,由我来告诉你
  • Spring基础面试题整理 理解加背诵
  • 【重学 MySQL】十七、比较运算符的使用
  • MySQL基础作业三
  • 机器学习特征分析
  • Linux IO模型(多路复用)
  • 【Unity开发】Blender导入VRM格式注意事项
  • 隔离式安全栅和晶体管安全栅有什么区别
  • Flutter Button使用
  • 高反差保留DetailTransfer测评
  • WUKONG-AI员工初体验