我最近在Virtualbox虚拟机上安装了Ubuntu 16.04 Server。之后,我想使用以下脚本安装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 vm也可以在没有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构建目录中手动./configuremake 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无缝运行,所以我开始怀疑这是否与虚拟机虚拟化有关:hipe是否需要cpu功能?我想念什么?

最佳答案

Erlang/OTP Build and Install页中所列,安装需要一些Required Utilities。如前所述,他们:


  这些是您解压缩和构建Erlang / OTP所需的工具。
  。 。 。
  
  
  GNU m4-如果启用了HiPE(本机代码)支持。
  


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

sudo apt-get install m4

08-28 10:20