Erlang 虚拟机在 ubuntu 虚拟机上加载时没有 hipe 支持

Erlang vm loads without hipe support on ubuntu vm

我最近在 Virtualbox 虚拟机上安装了 Ubuntu 16.04 服务器。之后我想使用以下脚本安装 erlang:

#!/bin/sh
DESTDIR="$HOME/workspace/erlang"
ACTIVATE=". $DESTDIR/activate"
KERL_CONFIGURE_DISABLE_APPLICATIONS="odbc"
KERL_CONFIGURE_OPTIONS="--enable-dirty-schedulers --enable-hipe --with-openssl" 

curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
chmod a+x kerl
./kerl update releases
mkdir -p "$DESTDIR"
./kerl build 19.0 erlang.19.0.dirty_sched.ssl
./kerl install erlang.19.0.dirty_sched.ssl "$DESTDIR"
echo "$ACTIVATE" >> "$HOME/.bashrc"
"$ACTIVATE"

脚本工作正常,但即使我明确启用了 hipe,erlang 虚拟机在没有 hipe 支持的情况下启动:

$ erl
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [kernel-poll:false]

Eshell V8.0  (abort with ^G)
1>

我尝试在 kerl 构建目录中手动 ./configure & make otp,似乎 hipe 支持已启用。但是,手动构建仍然存在同样的问题:

~/.kerl/builds/erlang.19.0.dirty_sched.ssl/otp_src_19.0/bin$ ./erl
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]

Eshell V8.0  (abort with ^G)
1>

我在物理 Ubuntu 主机上使用相同的设置并且 hipe 可以无缝工作所以我开始怀疑这是否与这台机器被虚拟化的事实有关:有没有 cpu hipe 需要的功能?我错过了什么?

Erlang/OTP Build and Install page, there are some Required Utilities 中所列安装所需。如前所述,他们的:

These are the tools you need in order to unpack and build Erlang/OTP.
. . .

  • GNU m4 -- If HiPE (native code) support is enabled.

因此您需要安装 GNU m4 才能启用 HiPE 支持。
使用以下命令安装它:

sudo apt-get install m4