由于最终部署的生产环境是Centos,所以我需要在Centos中安装Erlang B13R04 ,第一次做这件事情破费周折,主要是对Erlang依赖的库不熟悉,总是编译不过;这里梳理一下安装过程中的细节:
Erlang依赖哪些库?
- A fully working GCC compiler environment
- Ncurses development libraries
- OpenSSL development libraries (如果使用mysql必须安装)
安装了这些库之后,必须要重新执行configure命令,configure之后会有提示哪些依赖的库没有安装,可以根据你的需要放弃安装一些库;上面的操作可以使用下面的命令实现:
> sudo yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
> wget http://www.erlang.org/download/otp_src_R13B04.tar.gz
> tar xfvz otp_src_R13B04.tar.gz
> cd otp_src_R13B04/
> ./configure --with-ssl
> sudo make install
> wget http://www.erlang.org/download/otp_src_R13B04.tar.gz
> tar xfvz otp_src_R13B04.tar.gz
> cd otp_src_R13B04/
> ./configure --with-ssl
> sudo make install
./configure 的时候会有很多选项其中 比较常用的是:
--enable-smp-support - SMP support (enabled by default if a usable POSIX thread library or native Windows threads is found)
--enable-kernel-poll - Kernel poll support (enabled by default if possible)
--enable-hipe - HiPE support (enabled by default on supported platf
注意,如果你遇到下面的错误:
{error,
{load_failed,
"Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-2.0/priv/lib/crypto.so: undefined symbol: enif_make_new_binary'"}}
{load_failed,
"Failed to load NIF library: '/usr/local/lib/erlang/lib/crypto-2.0/priv/lib/crypto.so: undefined symbol: enif_make_new_binary'"}}
那么极有可能是两个原因:
- 没有安装OpenSSL
- 你安装了多版本的Erlang,R14A和R13B04冲突造成的,删除erlang相关的文件夹,重新安装即可
Crypto的类库可能多次折磨到你,如果在windows环境中遇到下面的错误:
application: crypto
exited: {shutdown,{crypto_app,start,[normal,[]]}}
exited: {shutdown,{crypto_app,start,[normal,[]]}}
那基本上就是因为没有安装OpenSSL的原因,去下载一个Win32OpenSSL安装一下就可以解决,安装过程中按照默认一路next即可。
还需要提醒的是:在centos环境中,建议规划好服务器不要在root目录安装,否则你在make的时候就会遇到错误。