openEuler ARM使用vdbench50407

openEuler ARM 使用 vdbench50407

系统信息:openEuler 22.03 (LTS-SP4) Linux 5.10.0-216.0.0.115.oe2203sp4.aarch64

1. 软件包获取

2. 编译动态库

bash 复制代码
# 默认安装java-11-openjdk
dnf install java java-devel
# 获取java.home路径
java -XshowSettings:properties -version

# 解压vdbench50407源码包并创建linux目录
unzip vdbench50407.src.zip -d /root/vdbench50407-src/
cd /root/vdbench50407-src/src/
mkdir linux

# 更新 make.linux 文件,vdb=vdbench源码路径|java=java.home路径|删除-m32和-m64字符
cd Jni/
sed -i 's#vdb=$mine/vdbench504#vdb=/root/vdbench50407-src/src#g' make.linux
sed -i 's#java=/net/sbm-240a.us.oracle.com/export/swat/swat_java/linux/jdk1.5.0_22/#java=/usr/lib/jvm/java-11-openjdk-11.0.25.9-3.oe2203sp4.aarch64/#g' make.linux
sed -i 's/-m32//g' make.linux 
sed -i 's/-m64//g' make.linux

# 更新vdbjni.h文件,118行首增加 extern
vim vdbjni.h
char ptod_txt[256]; /* workarea for PTOD displays */
# 更新为
extern char ptod_txt[256]; /* workarea for PTOD displays */

# 执行编译
./make.linux

3. 运行vdbench

bash 复制代码
# 解压vdbench50407 bin包
unzip vdbench50407.zip -d /root/vdbench50407/

# 复制源码目录下 linux64.so 动态库文件,并重新命名 aarch64.so
cp /root/vdbench50407-src/src/linux/linux64.so /root/vdbench50407/linux/aarch64.so

# 测试
cd /root/vdbench50407
./vdbench -t

4. 错误处理

4.1. 错误1

txt 复制代码
target directory: /root/vdbench50407-src/src
Compiling 32 bit
In file included from /root/vdbench50407-src/src/Jni/vdbjni.c:13:
/root/vdbench50407-src/src/Jni/vdbjni.h:23:10: fatal error: jni.h: No such file or directory
   23 | #include <jni.h>
      |          ^~~~~~~
compilation terminated.
In file included from /root/vdbench50407-src/src/Jni/vdblinux.c:18:
/root/vdbench50407-src/src/Jni/vdbjni.h:23:10: fatal error: jni.h: No such file or directory
   23 | #include <jni.h>
      |          ^~~~~~~
compilation terminated.
In file included from /root/vdbench50407-src/src/Jni/vdb_dv.c:13:
/root/vdbench50407-src/src/Jni/vdbjni.h:23:10: fatal error: jni.h: No such file or directory
   23 | #include <jni.h>
      |          ^~~~~~~

解决方法

bash 复制代码
# make.linux文件,java路径配置错误
vim /root/vdbench50407-src/src/Jni/make.linux

vdb=/root/vdbench50407-src/src
java=/usr/lib/jvm/java-11-openjdk-11.0.25.9-3.oe2203sp4.aarc64/
jni=$vdb/Jni

# 不确定JDK路径,通过以下方法查找
find / -type f -name 'jni.h'

5. 错误1

txt 复制代码
/usr/bin/ld: vdblinux.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
/usr/bin/ld: vdb_dv.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
/usr/bin/ld: vdb.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
chmod: cannot access '/root/vdbench50407-src/src/linux/linux32.so': No such file or directory
Compiling 64 bit
Linking 64 bit

/usr/bin/ld: vdblinux.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
/usr/bin/ld: vdb_dv.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
/usr/bin/ld: vdb.o:(.bss+0x0): multiple definition of `ptod_txt'; vdbjni.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status

解决方法

bash 复制代码
# 更新vdbjni.h文件,118行首增加 extern
vim /root/vdbench50407-src/src/Jni/vdbjni.h

char ptod_txt[256]; /* workarea for PTOD displays */
# 更新为
extern char ptod_txt[256]; /* workarea for PTOD displays */
相关推荐
readhere8 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI9 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz9 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
‎ദ്ദിᵔ.˛.ᵔ₎9 小时前
关于Linux 线程局部存储的认识
linux·运维
GlobalInfo9 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
隔窗听雨眠11 小时前
KingbaseES平替全链路实践:从迁移评估到可持续运维
运维
skywalk816311 小时前
登到192.168.1.5那台机器,看看今天白天,大约从早晨到晚上,都卡住了。看看因为什么卡住,为什么卡住而没有杀死那个导致卡死的进程,为什么
运维·系统·freebsd
运维行者_11 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
小小de风呀11 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习