打造高效的跨平臺的OpenOffice.org開發環境之二--Emacs 24的編譯與安裝

[內容提要] 本文主要說明怎樣獲取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的環境配置和所需的附加組件,以及插件編譯安裝。

  1. 獲得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。

  1. MinGW/MSYS編譯環境

安裝MinGW 5.1.6 和MSYS基本系統(1.0.14.1)、binutils、gcc4.4.0 、w32api。

  1. MinGW 安裝

安裝mingw5.1.6 ,安裝目錄在c:/mingw,如果安裝在其他目錄,注意msys的環境中要一致。

  1. 基本安裝

直接將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

  1. 更新MSYSCORE 到1.0.14

  2. 安裝MSys Developer Tooltkit

下載:http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe。安裝在目錄 C:/msys/1.0 下

  1. AutoTools in MSYS

更新 autoconf, automake and libtool 記住解壓到 C:/Msys/1.0

  1. 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='')

  1. 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編譯環境》

  1. 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源碼打包,這樣可以實現不同平臺源碼共用。

安裝後運行效果圖emacs24-run-20100421

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

  1. 編譯安裝

在mingw下編譯與linux一樣。

bzr pull
make bootstrap
make info
cd lisp
make autoloads
cd ..
make install #將emacs安裝在 d:/SoftEnv/emacs240目錄下

  1. 增加對圖像的支持

雖然我們在編譯emacs時已經增加了對png、svg等圖形的支持,但安裝後的emacs找不到相關庫文件的路徑,最好將libtiff3.dll等exe、dll文件copy到安裝目錄的bin目錄下。下面是是否有image支持的運行emacs開始界面的區別。

image image

  1. 註冊 Emacs

    假定你安裝emacs 的目錄是d:/SoftEnv/emacs240。首先從emacs bin目錄下運行addpm.exe。既可以雙擊運行該程序,或在cmd下運行。調用addmp.exe將在windows註冊數據庫創建一個鍵值,告訴emacs在那兒找到支持文件,並且在開始菜單中創建一個文件夾,和連接到runemacs.exe快捷方式。以後可以方便地運行emacs了。

  2.  

插件安裝

 

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:[email protected]:/cvsroot/cscope login
cvs -z3 -d:pserver:[email protected]:/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 安裝要求:

源碼下載:

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安裝

 

安裝要求:

  1. Emacs版本:要求 >= 21 。這個不成問題,我們使用的是24.0

  2. CEDET套件: 從 http://cedet.sourceforge.net可以得到,按照 http://cedet.sourceforge.net/setup.shtml 上面的說明安裝好。Emacs 24.0 已經將cedet包含在內,如果你要使用最新的cedet,也可以將內嵌cedet 屏蔽掉。

  3. 對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在開發中,不斷增加很多新特性和新功能,需要寫一個包括源碼下載編譯,以及插件安裝配置的腳本。

 

參考文獻:

  1. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章