`
cryolite
  • 浏览: 581575 次
  • 性别: 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编译需要这个 ”执行此语句是什么意思呢?

相关推荐

    erlang_mysql编译好了

    1. **获取源代码**:你需要找到Erlang MySQL客户端库的源代码。这可能是从GitHub或其他开源代码托管平台下载的。例如,`mysql-erlang`或`emysql`是两个常见的选择。 2. **环境准备**:确保你的系统上已经安装了...

    ubuntu20.04离线安装perf3

    - 如果目标机器无法执行`apt-get`命令,可能是因为缺少必要的软件包管理器,这时需要考虑使用其他方法,如手动编译源代码安装iperf3。 - 在网络受限环境中,定期更新系统和软件包是必要的,但离线环境下这需要额外的...

    erlang环境搭建

    2. **配置Emacs和Distel**:在Linux中,你可以使用系统提供的Emacs,也可以选择从源代码编译最新版本。安装完成后,将Distel的源代码克隆或下载到你的`~/.emacs.d`目录下,然后在你的`.emacs`配置文件中添加与...

    Erlang 运行环境的安装文件

    如果从源代码编译,需要先安装依赖,然后解压源码,配置并编译安装。 - **macOS**:使用 Homebrew(一个包管理器)可以通过 `brew install erlang` 命令安装。 4. **验证安装**:安装完成后,打开终端(Windows 上...

    安装rabbitmq的Erlang

    对于ARM架构的服务器,通常需要手动编译Erlang源代码,因为预编译的二进制包可能不适用于所有ARM平台。这里我们有一个名为`otp_src_26.1.2`的文件,这是Erlang/OTP(Open Telephony Platform)的源代码包,版本为...

    erlang 25.1 放入/root/.kerl/archives,直接./kerl build 25.1

    在Erlang的版本管理中,`kerl`是一个方便的工具,用于构建、安装和管理Erlang/OTP(Open Telecom Platform)的源代码版本。标签"erlang"表明讨论的核心是Erlang语言本身。文件名"otp_src_25.1"代表了OTP的源代码包,...

    ncurses依赖,erlang安装必备依赖

    接着,你可以下载Erlang的源代码包,同样通过编译安装的方式,并在配置阶段指定`ncurses`库的位置。确保在编译Erlang时,编译器能够找到`ncurses`的头文件和库文件。 安装Erlang的过程可能因版本不同而略有差异,但...

    erlangForLinux_20.1.zip

    5. **解压Erlang源代码**:使用tar命令解压源代码: ``` tar -zxvf otp_src_20.1.tar.gz ``` 6. **编译与安装**:进入解压后的源代码目录,配置并编译Erlang: ``` cd otp_src_20.1 ./configure make ...

    Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法

    Erlang的编译和安装过程需要几个步骤,首先是解压下载好的源代码包,然后进入源代码目录进行配置,使用configure命令检测系统环境,并准备编译。接下来是编译源代码,通过make命令完成。最后,通过执行make install...

    Erlang MQTT消息服务器 v1.1 beta for Ubuntu

    Erlang MQTT消息服务器v1.1 beta for Ubuntu是一个基于Erlang编程语言构建的高性能、高可用性的MQTT(Message Queuing Telemetry Transport)消息代理,专为Ubuntu操作系统设计。MQTT是一种轻量级的发布/订阅消息...

    otp_src_21.2.tar.gz

    下载并解压`otp_src_21.2.tar.gz`后,进入源代码目录,然后按照官方文档的指导进行配置、编译和安装: ```bash tar -xvf otp_src_21.2.tar.gz cd otp_src_21.2 ./configure make sudo make install ``` 安装完成后...

    基于ARM64架构linux系统的RabbitMQ离线安装依赖包unixodbc_2.3.1-4.1-arm64.deb

    2. **Linux系统**:Linux是一种自由和开放源代码的类Unix操作系统内核,许多流行的发行版如Ubuntu、CentOS、Debian等都是基于Linux内核。在ARM64设备上,也有相应的Linux发行版提供支持。 3. **RabbitMQ依赖**:...

    thrift安装

    进入解压后的Thrift源代码目录,执行以下命令来配置和编译Thrift: - `./bootstrap.sh`(如果项目没有提供configure文件) - `./configure` - `make` - `sudo make install` 5. **生成语言绑定** 编译完成后...

    EMQTT(Erlang MQTT消息服务器) v1.1.3 beta for Ubuntu

    而"emqttd"目录则包含了EMQTT服务器的源代码和其他相关文件,用户可以根据这些源代码进一步了解EMQTT的工作原理,或者进行定制化开发。 总的来说,EMQTT v1.1.3 beta for Ubuntu提供了在Ubuntu系统上部署和运行MQTT...

    基于ARM64架构linux系统的RabbitMQ离线安装依赖包make-4.3-arm64.zip

    `make-4.3-arm64`是`make`工具的一个特定版本,它是编译源代码时不可或缺的一部分,用于根据`Makefile`来自动执行构建过程。 在这个场景下,我们要做的是在ARM64架构的Linux系统上离线安装RabbitMQ。首先,我们需要...

    libtinfo.so.5(64位)

    4. **编译时问题**:如果MySQL是从源代码编译安装的,而编译时没有正确指定或链接到`libtinfo.so.5`,也会导致这个问题。 为了解决这个问题,可以尝试以下步骤: 1. **安装库**:使用包管理器(如`apt-get`或`yum`...

    EMQTT(Erlang MQTT消息服务器) v2.1.0 rc2 for Ubuntu16

    "易采源码下载.url"可能是一个链接,指向源代码的下载页面,方便开发者获取源代码进行定制或二次开发;"emqttd"目录包含了服务器的二进制文件和配置文件;"易采源码下载说明.txt"可能提供了额外的源码下载和编译指导...

    rabbitmq.rar

    综上所述,这个“rabbitmq.rar”压缩包可能是为了帮助用户在Linux环境下安装和配置RabbitMQ,包含的文件可能包括安装脚本、配置示例、源代码或文档。在实际操作中,根据具体需求选择合适的安装方式和配置策略,确保...

    rabbitmq-server-3.7.14.tar.gz

    你可以通过官方Erlang OTP的源代码编译安装,也可以通过Linux的包管理器如`apt-get`(Ubuntu/Debian)或`yum`(CentOS/RHEL)来安装。 接下来,我们下载RabbitMQ的3.7.14版本。题目中给出的压缩包文件名为"rabbitmq...

Global site tag (gtag.js) - Google Analytics