由于最終部署的生産環境是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
./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'"}}
那麼極有可能是兩個原因:
沒有安裝OpenSSL
你安裝了多版本的Erlang,R14A和R13B04沖突造成的,删除erlang相關的檔案夾,重新安裝即可
Crypto的類庫可能多次折磨到你,如果在windows環境中遇到下面的錯誤:
application: crypto
exited: {shutdown,{crypto_app,start,[normal,[]]}}
那基本上就是因為沒有安裝OpenSSL的原因,去下載下傳一個Win32OpenSSL安裝一下就可以解決,安裝過程中按照預設一路next即可。
還需要提醒的是:在centos環境中,建議規劃好伺服器不要在root目錄安裝,否則你在make的時候就會遇到錯誤。