[内容提要] 本文主要说明怎样获取emacs的最新源代码,emacs的编译环境,在不同平台(Ubuntu & Windows)从最新的源码编译与安装emacs的过程与步骤;以及插件cedet、ecb、cscope、jde编译安装过程。重点讲述windows下的编译环境配置。
我们要想在开发优秀的软件,必须要有优秀的开发工具。想必国人用windows习惯了,不用说首选必是MS visual studio,可以非常方便的开发自己的项目,但是只能在windows下使用。如果你的项目代码是跨平台的,vs将无武之地。Emacs是最古老的编辑器,也是世界上最强大的IDE。像OpenOffice.org这样大型跨平台的包括C++/C、JAVA、python、C#、甚至VBA多语言编译的项目,正是emacs显示其强大功能,无所不包的地方。
正所谓“工欲善其事,必先利其器”,我们如何利用和改造emacs,使之成为我们开发的利器。本篇是打造高效的跨平台的OpenOffice.org开发环境系列之一--Emacs 24 的编译与安装,讲述如何从源代码编译安装emacs,重点讲述windows xp使用mingw编译emacs24的环境配置和所需的附加组件,以及插件编译安装。
-
获得emacs源码
由于Emacs开发团队把版本控制系统从CVS转换为Bazzar,因此,这里我们以ubuntu和winodows xp 如何获取gnu emacs源码。
Ubuntu Lucid
安装 Bazaar
下面的安装命令为你安装bazaar 和相关依赖软件。
$ sudo apt-get install bzr
从仓库检出代码
$ cd ~
$ bzr branch http://bzr.savannah.gnu.org/r/emacs/trunk emacsrc
windows xp
如果你的windows系统安装了python2.6, 从下载地址:http://launchpad.net/bzr/2.1/2.1.1/+download/bzr-2.1.1.win32-py2.6.exe 下载bazaar for python,或者包括全部依赖组件的安装文件:http://launchpad.net/bzr/2.1/2.1.1/+download/bzr-2.1.1-setup.exe 。详细安装过程请参考[3.]
检出代码同ubuntu。
当然你希望在linux和windows 下使用同一份源代码,关于使用相同源代码请参考本文emacs 编译部分的说明。
更新源码
如果你要更新emacs到最新代码,只需在emacs检出代码目录下用以下命令即可:
bzr pull
在更新到最新版本,你可以看到emacs的版本信息,如下所示:
:/developdir/emacsrc$ bzr pull
Using saved parent location: http://bzr.savannah.gnu.org/r/emacs/trunk/
+N admin/unidata/BidiMirroring.txt
...
M test/ChangeLog
All changes applied successfully.
Now on revision 100623.
[注:]由于trunk分支在不断更新中,有可能你下的那个revision编译有些问题,解决办法:一是回滚到以前某个revision,版本100434在windows 和ubuntu 下编译通过;二是等再下一个revision。
编译emacs之前的准备
请仔细阅读emacsrc 目录下的INSTALL && INSTALL.BZR 文件,一般你只需按照上面说的做就可以编译安装emacs了。
Ubuntu Lucid
在ubuntu编译emacs非常简单,用apt-get即可简单完成emacs编译环境的构建。
$ sudo apt-get install build-essential $ sudo apt-get build-dep emacs23
windows xp
在windows使用MinGW来编译emacs。
-
MinGW/MSYS编译环境
安装MinGW 5.1.6 和MSYS基本系统(1.0.14.1)、binutils、gcc4.4.0 、w32api。
-
MinGW 安装
安装mingw5.1.6 ,安装目录在c:/mingw,如果安装在其他目录,注意msys的环境中要一致。
-
基本安装
直接将msysCORE-1.0.11-bin.tar.gz解压到c:/msys/1.0目录下。或使用msys安装向导(MSYS-1.0.11.exe) 安装,
编辑 "C:/msys/1.0/etc/fstab" 文件, 注意用 'LF 行结束符。得到如下形式:
c:/mingw /mingw
-
更新MSYSCORE 到1.0.14
-
安装MSys Developer Tooltkit
下载:http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe。安装在目录 C:/msys/1.0 下
-
AutoTools in MSYS
更新 autoconf, automake and libtool 记住解压到 C:/Msys/1.0
-
gcc 4.4.0 安装
使用sf网站的GCC 4.4.0, 下载地址: http://sourceforge.net/projects/mingw/files/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-full-4.4.0-mingw32-bin-2.tar.lzma/download 注意libtools工具有一个bug,使用文本编辑器编辑 MinGW/lib/gcc/mingw32/4.4.0/libstdc++.la文件(line should be library_names='')
-
Emacs 图形支持库
如果想要编译的emacs能够显示jpeg,tiff,gif,svg,xpm等格式的文件,或是想有一个漂亮的工具栏,那么就需要编译支持图形库的emacs。把需要的图形库头文件放在nt/inc目录下或是其他地方,然后把其路径使用-I包含进来,并把他们的dll文件与编译后的emacs放在一起。所有的图形库可以去http://gnuwin32.sourceforge.net/ 下载,包括: jpeg-dev_8-1_win32.zip、jpeg_8-1_win32.zip、libpng-dev_1.4.0-1_win32.zip、libpng_1.4.0-1_win32.zip、librsvg-dev_2.26.2-1_win32.zip、librsvg_2.26.2-1_win32.zip、libtiff-dev_3.9.1-2_win32.zip、libtiff_3.9.1-2_win32.zip、xpm-nox-4.2.0-lib.zip、xpm-nox-4.2.0-bin.zip、xpm-nox-4.2.0-dep.zip
详见《构建MSYS--GCC4.4.0编译环境》
-
makeinfo环境
下载MiKTeX 2.8,并安装。下载地址: http://ftp.ctex.org/mirrors/CTAN/systems/win32/miktex/setup/basic-miktex-2.8.3761.exe 在编译插件时加入miktex的路径。
@panshi /d/SoftEnv/emacs240/site-lisp/elib $ export PATH=$PATH:/d/SoftEnv/emacs240/bin @panshi /d/SoftEnv/emacs240/site-lisp/elib $ export PATH=/e/SoftEnv/MiKTeX/ 2.8/miktex/bin:$PATH
编译与安装emacs
环境配置好了,接下来的编译安装就很简单了。
Ubuntu Lucid
配置:
./configure --prefix=/opt/emacs240 CPPFLAGS="-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0"
编译与安装:
运行以下命令,即可在ubuntu系统上安装emacs,并且在开始面板菜单,应用程序->编程中看到emacs 了。
bzr pull
make bootstrap
cd lisp
make autoloads
cd ..
make
make dist
sudo make install
其中make dist 制作emacs source 发行包,在$emacsrc目录下生成emacs-$version将emacs源码打包,这样可以实现不同平台源码共用。
windows xp
configure
emacs 需要在dos环境下进行configure,然后将makefle文件转换成unix形式。在 cmd shell 下执行如下命令
configure --with-gcc --no-cygwin --no-debug --with-svg --prefix d:/SoftEnv/emacs240 --cflags -ID:/SoftEnv/gtk+/include/gtk-2.0 --cflags -IC:/MinGW/include --cflags -IC:/msys/1.0/include --cflags -IC:/msys/1.0/local/include --cflags -ID:/SoftEnv/gtk+/include/glib-2.0 --cflags -ID:/SoftEnv/gtk+/lib/glib-2.0/include
dos2unix makefile
-
编译安装
在mingw下编译与linux一样。
bzr pull
make bootstrap
make info
cd lisp
make autoloads
cd ..
make install #将emacs安装在 d:/SoftEnv/emacs240目录下
-
增加对图像的支持
虽然我们在编译emacs时已经增加了对png、svg等图形的支持,但安装后的emacs找不到相关库文件的路径,最好将libtiff3.dll等exe、dll文件copy到安装目录的bin目录下。下面是是否有image支持的运行emacs开始界面的区别。
-
注册 Emacs
假定你安装emacs 的目录是d:/SoftEnv/emacs240。首先从emacs bin目录下运行
addpm.exe
。既可以双击运行该程序,或在
cmd
下运行。调用
addmp.exe
将在
windows
注册数据库创建一个键值,告诉
emacs
在那儿找到支持文件,并且在开始菜单中创建一个文件夹,和连接到
runemacs.exe
快捷方式。以后可以方便地运行
emacs
了。
-
插件安装
Cscope安装
对于浏览源代码来说,在 Emacs 里面也有很多工具可用,比如自带的 etags 就不错,不过功能不如 Cscope 强大。它最初是由 Bell 实验室开发,并且多年以来一直是 AT&T Unix 商业发行版的一部分。它已经被用于管理超过两千万行代码的工程。本文主要讲述编译安装cscope,至于如何建索引,怎样使用cscope阅读代码,请参考《打造高效的跨平台的OpenOffice.org开发环境之三--Emacs定制与扩展》《打造高效的跨平台的OpenOffice.org开发环境之四--编辑与浏览OOo代码》
under unbuntu install cscope
a. download source :
使用wget下载已打包的cscope或直接从cscope cvs代码仓库checkout。
wget http://219.239.26.18/download/2367991/3051978/2/bz2/0/68/1261726543872_580/cscope-15.7a.tar.bz2
or:
cvs -d:pserver:anonymous@cscope.cvs.sourceforge.net:/cvsroot/cscope login
cvs -z3 -d:pserver:anonymous@cscope.cvs.sourceforge.net:/cvsroot/cscope co -P cscope
b. build && install cscope
# ./configure
# make
# sudo make install // 需要root权限
c. install cscope emacs plugins
cscope/contrib/xcscope/
cscope-indexer脚本位于/usr/bin目录下,xcscope.el被置于emacs默认的load-path
:/usr/local/bin$ sudo cp /media/develop/OpenSource/emacs/emacs_plugin/cscope/contrib/xcscope/cscope-indexer ./
:/usr/local/share/emacs$ ls ../../bin/
b2m cscope-indexer ebrowse emacs-24.0.50 etags ocs
cscope ctags emacs emacsclient grep-changelog rcs-checkin
$ sudo cp /media/develop/OpenSource/emacs/emacs_plugin/cscope/contrib/xcscope/xcscope.el /usr/share/emacs/site-lisp/
:/usr/local/share/emacs$ ls site-lisp/
cedet ecb elib jdee subdirs.el xcscope.el
d. 在~/.emacs.d/init.el文件中加入下面的语句。
;;cscope integration
(require 'xcscope)
至此,cscope安装完成,可以使用了。
Under Windows install cscope
windows下和linux类似,只是从源码编译安装很麻烦,就用编译好的cscope.exe sort.exe,将这两个文件以及 cscope-indexer文件copy到emacs bin目录下。同样cp xcscope.el 到 emace site-lisp目录。
CEDET安装
1、下载cedet的cvs版本
cvs -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet login cvs -z3 -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet co -P cedet
2、编译
方法一:用emacs编译*.el ,不编译online help
../../bin/emacs -Q -l cedet-build.el -f cedet-build
或
在emacs中打开cedet-build.el文件,然后
M-x eval-buffer
M-x cedet-build-in-default-emacs
编译过程中如果发生超过emacs堆栈大小的错误,退出emacs再重新编译即可。
方法二:
cd cedet
touch `find . -name Makefile` (非cvs版本不需要这个)
a) make
或
b) make EMACS=<your favorite emacs>
或
c) make MAKEINFO=/usr/local/bin/makeinfo
或
d) make MAKEINFO=echo
如果出现下面的错误请用d)来编译,或者修改错误文件。这个错误是由于文件格式不符合makeinfo要求。
/usr/local/share/emacs/site-lisp/cedet/eieio//eieio.texi:729: Cross 引用到不存在 Classes”(也许字段不正确?).
makeinfo:由于错误删除宏输出文件“/usr/local/share/emacs/site-lisp/cedet/eieio/eieio.info”;用 --force 保留宏输出。
如果编译过程中发生类似找不到loaddef文件,custom-autoload以及其他奇怪的错误,执行:
a) make clean-autoloads
b) make clean-all
然后再重新编译。编译错误还有可能是make版本引起的,请使用GNU make,或者使用windows下的安装方法。
3、简单配置:
;; Load CEDET
(load-file "E:/OOEnv/emacs240/site-lisp/cedet/common/cedet.el")
JDEE安装
JDEE 安装要求:
-
-
- 最新版的Emacs 或 XEmacs ,在windows平台下是NT/Emacs。
Eric Ludlam开发的Collection of Emacs Development Environment Tools (CEDET)
Emacs Lisp library (elib) 包. elib-1.0.tar.gz。
JDK
IE 或firefox 浏览器
对windows 环境还需要bash 或其他 Unix-style shell
- 最新版的Emacs 或 XEmacs ,在windows平台下是NT/Emacs。
-
源码下载:
svn co https://jdee.svn.sourceforge.net/svnroot/jdee jdee
编译前的准备
Update the Emacs Lisp load path
编译jdee 需要speedbar, eieio, and semantic bovina 以及elib 包,在安装好以上包的同时,需要更新lisp加载路径,如下所示:
(add-to-list 'load-path (expand-file-name "
E:/OOEnv/emacs240/site-lisp/cedet/semantic
"))
(add-to-list 'load-path (expand-file-name "
E:/OOEnv/emacs240/site-lisp/cedet/speedbar
"))
(add-to-list 'load-path (expand-file-name "
E:/OOEnv/emacs240/site-lisp/cedet/eieio
"))
(add-to-list 'load-path (expand-file-name "
E:/OOEnv/emacs240/site-lisp/jdee/lisp
"))
(add-to-list 'load-path (expand-file-name "
E:/OOEnv/emacs240/site-lisp/elib
"))
Ensure that the JDEE is loaded at Emacs startup
(require 'jde)
编译步骤
Ubuntu:
1、配置java classpath
请参考: http://ant-contrib.sourceforge.net/#install
2、参照jde/doc/install.html的说明,创建供ant使用的文件:~/.jdee-config.properties ,内容如下所示:
cedet.dir=/usr/local/share/emacs/site-lisp/cedet
elib.dir=/usr/local/share/emacs/site-lisp/elib
prefix.dir=/usr/local/share/emacs/site-lisp/jde
build.bin.emacs=emacs
config.time=2010/05/22 02/:51
3、Configure and build with ant
修改 build.xml使之符合java antlr的要求,并和你的antlr.jar一致,由于release-info 编译通不过,又不影响使用,所以去掉 release-info的打包,下面的diff 是我的修改
==============================================================
--- build.xml (版本 239)
+++ build.xml (工作副本)
@@ -196,7 +196,7 @@
-
+
out="${build.release.properties.xml}"
style="${build.release.properties.xsl}">
@@ -245,7 +245,7 @@
windowtitle="JDEE ${project.version} Java API"/>
-
+
description="create the "source" distribution, which includes binaries, the docs, and the Java source">
:/developdir/emacsrc/site-lisp/jdee$ ant -p //查看ant 编译选项
ant clean-all
ant configure
ant build
ant bindist
ant install
如果install有错误,请编译好的dist下的jdee-2.4.1 copy到site-lisp目录下,并更名为jdee
ECB安装
安装要求:
-
Emacs版本:要求 >= 21 。这个不成问题,我们使用的是24.0
-
CEDET套件: 从 http://cedet.sourceforge.net可以得到,按照 http://cedet.sourceforge.net/setup.shtml 上面的说明安装好。Emacs 24.0 已经将cedet包含在内,如果你要使用最新的cedet,也可以将内嵌cedet 屏蔽掉。
-
对java 代码的可选项: 如果编辑java代码,希望ECB很好工作,最好安装JDEE 包 ( http://jdee.sourceforge.net) 。
简单配置:
;; Load ECB
(add-to-list 'load-path "E:/OOEnv/emacs240/site-lisp/ecb")
(require 'ecb)
(require 'ecb-autoloads) ;Fast loading
注意这个段要加在cedet配置的后面
linux 编译
修改Makefile 文件
CEDET=/usr/local/share/emacs/site-lisp/cedet
:/developdir/emacsrc/site-lisp/ecb$ make
:/developdir/emacsrc/site-lisp/ecb$ make all
如果在make 时出现以下错误:
...
Directories-window”(也许字段不正确?).texi:1497: Cross 引用到不存在的节点“ECB
Methods-window”(也许字段不正确?).ecb.texi:1193: Cross 引用到不存在的节点“ECB
edit-area”(也许字段不正确?).ecb//ecb.texi:975: Cross 引用到不存在的节点“The
/developdir/emacsrc/site-lisp/ecb//ecb.texi:112: Cross 引用到不存在的节点“Intera ECB commands”(也许字段不正确?).
makeinfo:由于错误删除宏输出文件“/developdir/emacsrc/site-lisp/ecb/html-help/index.html”;用 --force 保留宏输出。
mv: 无法 stat “html-help/index.html”: 没有那个文件或目录
make: *** [online-help] 错误 1
请在make 时使用参数如下,并安装好texinfo软件,错误大多是texi文件的格式问题,@变量定义不能跨行,错误修改方法是让@变量在一行内。这些错误不影响ecb的使用,只是online help不好使。
make ecb EMACS=emacs CEDET=/usr/local/share/emacs/site-lisp/cedet
总结
本文主要讲述emacs以及在openoffice.org开发中用到的需要编译的插件cedet、cscope、jde、ecb等在ubuntu、windows的编译与安装。详细说明不同平台下的环境配置,以及编译过程中出现问题时处理方法。至于如何定制与配置,将在另一篇文章中讲解。
进一步的工作,由于emacs在开发中,不断增加很多新特性和新功能,需要写一个包括源码下载编译,以及插件安装配置的脚本。
参考文献:
-
Emacs Wiki http://www.emacswiki.org/
BzrForEmacsDevs http://www.emacswiki.org/emacs/BzrForEmacsDevs
Bazaar on Windows - Quick install guide http://wiki.bazaar.canonical.com/WindowsInstall
compile-emacs-from-cvs-on-windows http://derekslager.com/blog/posts/2007/01/emacs-hack-3-compile-emacs-from-cvs-on-windows.ashx
Building Emacs on MS Windows http://www.ourcomments.org/Emacs/w32-build-emacs.html
Emacs 编辑环境 http://www.ibm.com/developerworks/cn/aix/lp/emacsnew.html
Emacs中文网 http://emacser.com/
cscope的主页: http://cscope.sourceforge.net/
http://cedet.sourceforge.net/setup.shtml
http://jdee.sourceforge.net/install.html
http://ecb.sourceforge.net/docs/Install-and-first-steps.html#Install-and-first-steps
http://emacser.com/install-cedet.htm