`
cryolite
  • 浏览: 572777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ubuntu下erlang源代码的编译与安装

阅读更多
今天重装了ubuntu系统(ubuntu server),发现开发环境几乎是裸的。再重新编译安装erlang需要一些关键库,去年装过,现在又忘了,记之备查。

当然可以用apt-get直接安装erlang,不过版本有些旧而已,本文说的是如何从源代码编译出一个在ubuntu下可用的erlang。

可以用如下命令察看apt安装erlang所依赖的其它库:
sudo apt-get build-dep erlang
不过这里的许多库其实不是必须的,比如openjdk,fop等等。

1. 基础开发工具的安装

指gcc/g++、make
sudo apt-get install build-essential 


2. 其它Erlang依赖的关键库
sudo apt-get install libncurses5-dev 
sudo apt-get install libssl-dev


基本上安装以上软件后就可以顺利的编译出一个可用的erlang/OTP及其虚拟机了:
./configure && make
sudo make install


缺省情况下,Erlang Home目录是/usr/local/lib/erlang/

缺少的是:
  • 对systemtap的支持,
  • JInterface的支持,
  • wx的GUI库(用不了observer),
  • ODBC的支持,
  • Erlang文档的生成

如果还需要以上功能,继续往下看。

3. 老版本的Erlang可能依赖的其它库
现在m4不再是必须的了,老版本的erlang可能需要
sudo apt-get install m4

还有这些,也不是必须的,可能老的版本需要
sudo apt-get install libncursesw5-dev libreadline6-dev

4. 其它不影响erlang源代码编译的非必需软件的安装
4.0 systemtap的支持
首先安装systemtap需要linux内核debug symbols的支持,因此需要重新编译自己的内核。

好在有人为ubuntu-10.xx提供了linux-image-dbgsym的apt安装源,省下了这一步。详见 这篇备忘录
安装好内核dbgsym后,开始安装systemtap和systemtap-sdt-dev:
sudo apt-get install systemtap systemtap-sdt-dev


在编译Erlang/OTP时要指定systemtap
./configure --with-dynamic-trace=systemtap --enable-vm-probes --enable-native-libs

注意如果只装systemtap,没有安装systemtap-sdt-deb会出现如下错误:
configure: error: No dtrace utility found.

4.1. JDK的安装
因为JInterface的编译需要java编译器javac(JInterface是JDK5的, 若缺省JDK低于1.5,make到JInterface时依然会出错)。

JInterface不是必须的,不过要坚持使用的话就需要安装JDK了。有两种安装方法:
ubuntu可以通过apt-get安装,也可以去oracle官方网站下载安装包手工安装。

4.1.1 apt-get安装

很久以前,ubuntu是可以直接apt-get安装java的:
sudo apt-get install sun-java6-jdk

从Ubuntu 10.04开始,apt-get不再缺省提供sun-jdk,需要自己手动为apt添加JDK源
1) 在Ubuntu 10.04中手动添加源:
sudo apt-add-repository "deb http://archive.canonical.com/ lucid partner"

2) 在Ubuntu 10.10中,手动添加源:
sudo apt-add-repository "deb http://archive.canonical.com/ubuntu maverick partner"

3) 在Ubuntu 11.10中,手动添加源:
 sudo add-apt-repository ppa:ferramroberto/java
 

完成安装:
sudo apt-get update
sudo apt-get install sun-java6-jdk



4) 在Ubuntu 12.10中,手动添加源:
 sudo add-apt-repository ppa:webupd8team/java
 

完成安装:
sudo apt-get update 
sudo apt-get install oracle-java6-installer
 


4.1.2 下载JDK安装包安装
当然也可以去oracle的网站直接下载JDK(需要注册)安装,jrockit和sun的JDK都可以
sun:
http://www.oracle.com/technetwork/java/javase/downloads/index.html

jrockit:
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html

4.1.3 安装完成后需要为JDK设置环境变量
一般是设置JAVA_HOME和PATH(我习惯在/etc/profile中设置);
JAVA_HOME=/my/path/to/jdk
PATH=$JAVA_HOME/bin:$PATH

注:
安装完jdk后最好检查一下javac,因为新安装的JDK不一定会自动成为缺省的JDK。检查java编译器的版本:
javac -version




4.2 还有一些其他非关键库

比如关系数据库,图形界面。
sudo apt-get install libc6 (Ubuntu 9.10以后自动带这个,所以不用再装了)
sudo apt-get install unixodbc unixodbc-dev  ODBC方式提供对传统关系数据库支持

erlang的新GUI工具是基于wxWidgets开发的,因此要使用这些工具必须安装wxWidgets
在ubuntu下安装wx:
sudo apt-get install freeglut3-dev libwxgtk2.8-dev


注意只有wx也不会顺利的make出支持GUI的erlang/otp,freeglut3-dev也是必须的,否则提示如下错误:
Can not link the wx driver, wx will NOT be useable


老版本的erlang使用的旧图形工具(如toolbar、appmon、pman、debugger、tv等),都是用的tcl/tk的wish做GUI界面,因此需要安装tk
sudo apt-get install tk8.5

tk不会影响老版本erlang的编译和安装,但是当在开发中想使用toolbar提供的一系列图形监控工具时就会出现问题。

4.3 生成erlang帮助文档所需要的软件

在R13B03后,要想自动生成帮助文件,需要安装xsltproc和fop:
sudo apt-get install xsltproc
sudo apt-get install fop

都挺大的(上百MB),如果不在乎文档,可以不安装,不会影响erlang的make。

5. 安装man手册
官方除了源码包,还提供了man手册的下载,将该man压缩包下载后,解压缩到erlang home目录下,以后可以用erl -man命令察看相关模块的定义和说明了,如察看lists模块:
erl -man lists


6. 卸载
缺省情况下,Erlang home目录是/usr/local/lib/erlang/, 直接删掉该目录即可卸载erlang otp。

如果自己设置了ERL_LIBS之类的环境变量,也记得删掉对应的目录。

cryolite不保证blog文章的稳定性,如有时间和需要随时会修改原文。

7. 其它安装方法

7.1 用clang编译erlang
关于clang可以看这里(在 Linux 下使用 clang 3.0 + llvm 3.0 + libc++)的介绍。

ubuntu下有两种clang安装方法
1) 可以apt-get安装clang
sudo apt-get install clang

然后
CC=clang CXX=clang ./configure


2) 也可以去llvm网站下载最新的编译好的官方clang,然后
CC=/path/to/clang+llvm-3.0/bin/clang CXX=/path/to/clang+llvm-3.0/bin/clang ./configure


这样完成配置后就可以make R15B了。
make 
sudo make install

但是R14B04不能成功make,有人在Mac OS X下设置CFLAGS 为 -Qunused-arguments编译成功。但在ubuntu下gcc不支持此参数。。。

我比较了下R14B和R15B的安装说明文档,发现只有后者有提到clang,估计R14B可能官方不支持clang。
理论上clang也能编译R14B的,有人手动修改编译脚本成功完成编译,但编译出的R14B虚拟机运行时似乎有问题,所以我就不折腾R14B的编译了。



7.2. erlang-solutions官方提供的二进制安装包

现在erlang-solutions开始正式提供编译好的Erlang OTP,见这里
提供各种平台(Mac OSX,ubuntu,linux,OpenSUSE,CentOS,Debian)上编译好的各个版本Eralng OTP。

就ubuntu而言,它提供的版本要比ubuntu官方的新,而且发布非常及时,新版erlang OTP刚刚正式发布,二进制的就已经编译好了。

不过它要额外安装一些其他依赖,比如,openjdk、还有GUI gtk,wx什么的,即使是在无GUI的server ubuntu下。

可以apt-get,也可以rpm安装。
分享到:
评论
3 楼 wrj913 2011-11-24  
   我菜鸟一个,哪里有详细的文档,给一个,谢谢
2 楼 cryolite 2009-06-15  
在线安装sun的jdk,Erlang的JInterface需要这个才能build
1 楼 langzhe 2009-06-12  
兄弟看到你写的了,简单明了。能否解释一下,我有点不全明白什么意思?
我也在装ERLANG 以前装的时候是从网上自动装的,现在发现有部分内容没有装上,如:gs 就没有装上。安照您说的方法试了一边。但是不明白你“sudo apt-get install sun-java6-jdk  JInterface编译需要这个 ”执行此语句是什么意思呢?

相关推荐

Global site tag (gtag.js) - Google Analytics