如何在Linux上编译带OpenJ9的OpenJDK时解决NUMA找不到报错
问题描述
各位Stack Overflow用户大家好!
我尝试在Linux系统上构建集成OpenJ9的OpenJDK,运行configure脚本时收到如下报错:
configure: error: Could not find numa!
我本身没有配置多CPU,按常理脚本应该直接生成配置文件,允许我继续构建。
我已经搜索过该报错信息,也查阅并遵循了项目GitHub上的官方文档。
我使用的配置命令如下:
bash configure --with-boot-jdk=/home/USER/bootjdk16
完整的执行输出如下,供参考:
configure: Configuration created at Sun Nov 21 14:08:05 CET 2021. checking for basename... /usr/bin/basename checking for dirname... /usr/bin/dirname checking for file... /usr/bin/file checking for ldd... /usr/bin/ldd checking for bash... /usr/bin/bash checking for cat... /usr/bin/cat checking for chmod... /usr/bin/chmod checking for cp... /usr/bin/cp checking for cut... /usr/bin/cut checking for date... /usr/bin/date checking for gdiff... [not found] checking for diff... /usr/bin/diff checking for echo... echo [builtin] checking for expr... /usr/bin/expr checking for find... /usr/bin/find checking for gunzip... /usr/bin/gunzip checking for pigz... [not found] checking for gzip... /usr/bin/gzip checking for head... /usr/bin/head checking for ln... /usr/bin/ln checking for ls... /usr/bin/ls checking for gmkdir... [not found] checking for mkdir... /usr/bin/mkdir checking for mktemp... /usr/bin/mktemp checking for mv... /usr/bin/mv checking for gawk... /usr/bin/gawk checking for printf... printf [builtin] checking for rm... /usr/bin/rm checking for rmdir... /usr/bin/rmdir checking for sh... /usr/bin/sh checking for sort... /usr/bin/sort checking for tail... /usr/bin/tail checking for gtar... [not found] checking for tar... /usr/bin/tar checking for tee... /usr/bin/tee checking for touch... /usr/bin/touch checking for tr... /usr/bin/tr checking for uname... /usr/bin/uname checking for wc... /usr/bin/wc checking for xargs... /usr/bin/xargs checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for a sed that does not truncate output... /usr/bin/sed checking for df... /usr/bin/df checking for nice... /usr/bin/nice checking for greadlink... [not found] checking for readlink... /usr/bin/readlink checking for cygpath... [not found] checking for wslpath... [not found] checking for lsb_release... [not found] checking for cmd.exe... [not found] checking for cmp... /usr/bin/cmp checking for uniq... /usr/bin/uniq checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking openjdk-build os-cpu... linux-x86_64 checking openjdk-build C library... gnu checking openjdk-target os-cpu... linux-x86_64 checking openjdk-target C library... gnu checking compilation type... native checking for top-level directory... /home/USER/openj9-openjdk-jdk17 checking if custom source is suppressed (openjdk-only)... disabled, default checking for --enable-debug... disabled, default checking which debug level to use... release checking which variants of the JVM to build... server checking for m4... /usr/bin/m4 checking for cmake... /usr/bin/cmake checking for CRIU support... no (default) checking for cuda... no (default) checking for ddr... yes (default for xa64) checking if demos should be included in jdk image... no checking checking for numa... no configure: error: Could not find numa! configure exiting with result code 1
在此先感谢各位的帮助!
解决方案
OpenJ9构建默认开启NUMA支持校验,和你当前是否使用多CPU/NUMA硬件无关,你可以选择以下任意一种方案解决该问题:
- 安装NUMA依赖包
对应不同Linux发行版执行对应安装命令即可:- Debian/Ubuntu及衍生版:
sudo apt install libnuma-dev - CentOS/RHEL/Fedora及衍生版:
sudo dnf install numactl-devel
依赖安装完成后重新执行原configure命令即可正常通过校验。
- Debian/Ubuntu及衍生版:
- 禁用NUMA特性
如果你确认不需要NUMA功能,可以在configure命令中添加--disable-numa参数跳过校验,调整后的命令如下:bash configure --with-boot-jdk=/home/USER/bootjdk16 --disable-numa
内容的提问来源于stack exchange,提问作者LaserSami
相关产品推荐
相关产品推荐

