在Windows下编译Emacs  
  Windows下编译好的Emacs主要有两个版本,一个来自http://nqmacs.sourceforge.net/,另一个来自http://www.crasseux.com/emacs/。这两个版本都很好用,但是如果你想用最新的版本,你就需要自己编译一个Emacs,下面介绍一下我的编译过程(main branch和unicode branch都适用)。
  如果你不愿意编译,或者编译过程出现问题,可以到这里下载我编译好的CVS Emacs。
直接下载CVS Emacs源代码
  我是使用Cygwin中的cvs来下载Emacs源代码的,命令如下:
$export CVS_RSH=ssh
$cvs -z3 -d:ext:anoncvs@cvs.avannah.gnu.org:/cvsroot/emacs co emacs
这样签出的是main branch,如果想签出unicode branch,命令如下:
$export CVS_RSH=ssh
$cvs -z3 -d:ext:anoncvs@cvs.savannah.gnu.org:/cvsroot/emacs co -r emacs-unicode-2 emacs
通过代理服务器下载CVS Emacs源代码
  我是一个学生,而教育网的国际流量要是付费的,Emacs源代码有好几十兆,可是不少钱:(
  如果你和我有一样的问题,那么就用代理服务器来下载CVS Emacs吧。先到http://www.taiyo.co.jp/~gotoh/ssh/connect.html下载一个connect.c文件,然后在Cygwin中编译这个文件,把编译出来的connect.exe放到/usr/local/bin:
$gcc connect.c -o connect
$mv connect.exe /usr/local/bin/
  然后编辑 ~/.ssh/config 文件(如果没有,自己建立一个),添加如下内容:
Host *.gnu.org
ProxyCommand connect -H your.http.proxy:port %h %p
  这样就可以通过HTTP代理下载CVS Emacs源代码了,然后就和直接下载源代码的过程一样了,照上面做吧。
安装MSYS和MinGW
  到http://www.mingw.org下载MSYS-1.0.10.exe、MinGW-3.1.0-1.exe、mingw32-make-3.80.0-3.exe,安装MSYS到C:MSYS,安装MinGW到C:MinGW,再把mingw32-make也安装到C:MinGW,再将C:MinGWbin下的mingw32-make.exe复制为make.exe(原来的mingw32-make.exe还有用,不要动)。然后设置环境变量,将 C:MinGWbin;C:MinGWinclude;C:MinGWlib;C:MSYSbin 加入到 $PATH 中, 注意 C:MinGWbin要在C:MSYSbin的前面。
安装图形支持库
  目前Emacs可以支持jpeg、gif、tiff、xpm、png等图片格式,在Windows下编译需要安装图片支持库。所有支持库都可以在http://gnuwin32.sourceforge.net/或者http://sourceforge.net/project/showfiles.php?group_id=23617找到。
   1. jpeg支持
      下载jpeg-6b-3.exe,然后安装到C:MinGW
   2. gif支持
      下载libungif-4.1.0b1-bin.zip和libungif-4.1.0b1-src.zip,全部解压到C:MinGW,然后将C:MinGWsrclibgif_lib.h复制到C:MinGWinclude下
   3. tiff支持
      下载tiff-win32-3.6.1-2.exe,安装到C:MinGW
   4. xpm支持
      下载xpm-nox-4.2.0-bin.exe和xpm-nox-4.2.0-src.exe,全部安装到C:MinGW,然后将C:MinGWsrcxpm-nox-4.2.0libsimx.h复制到C:MinGWinclude下,并在C:MinGWinclude下建子目录X11,然后将C:MinGWsrcxpm-nox-4.2.0libxpm.h复制到C:MinGWincludeX11下
   5. png支持
      下载zlib-1.2.1-1.exe和libpng-1.2.8.exe,全部安装到C:MinGW
优化选项
  Emacs默认的makefile文件比较保守,我们可以修改nt目录下 gmake.defs 中的 WIN32_WINNT=0x0500 ,让编译的Emacs可以使用Windows 2000以后系统的一些新的特性。
编译过程
  编译过程需要在cmd和MSYS中共同完成,先将cmd和MSYS的目录都切换到源代码的nt目录下,然后按下面步骤编译:
   1. 在cmd中执行
      >configure.bat --with-gcc --no-debug --no-cygwin
   2. 在cmd中执行
      >mingw32-make bootstrap
      如果出现错误,就在MSYS中执行
      $make bootstrap
   3. 在cmd中执行
      >mingw32-make info
      >mingw32-make install INSTALL_DIR=C:/Emacs (注意这里要用/而不是)
复制图形库文件
  将C:MinGWbin中的jpeg62.dll、libpng13.dll、libtiff3.dll、libungif.dll、libXpm-noX4.dll和zlib1.dll复制到C:/Emacs/bin下。好了,这样就完成了编译过程,你可以在Emacs的开始画面中看到自己机器的名字,呵呵,很酷吧。
 
 
VC make emacs
这里列出的是在windows下如何用VC来编译emacs,所以如果你用的是Linux/Unix的话,就不要看了, 千万别看。

1.  第一步当然是取得源码,emacs的源码是用cvs管理的。所以你先要有cvs,如果没有的话,可以安装wincvs,记得要把wincvs加到path 里。如果不知道什么是path. -_-#!  不过,我还是建议用cygwin(http://cygwin.com),因为build过程中还要用到 cp,mv等unix命令。另外,好象cygwin缺省并不安装cvs,你要打开cygwin的setup.选择dev这个category安装一下。如果你不会用cvs....-_-#,那先看cvs的manual吧。如果不想看也我所谓,其实也只需要用一条命令就行了。
ok,在cygwin的bash下执行下面两句。(先cd到你要放emacs源码的目录下面)
命令:
export CVS_RSH="ssh"
cvs -z3 -d:ext:anoncvs@cvs.savannah.gnu.org:/cvsroot/emacs co emacs

正确执行之后,你就有emacs的源码了。如果想取其它分支,自己看着办吧。

2.  第二步是configure. 其实就是生成一堆makefile. 唉,象我这种一直生活在windows里,使用VC的人,makefile实在是比较陌生的,还好,只需要 cd 到 emacs/nt 目录下面,执行configure.bat就好了。如果你还想要emacs支持图像显示的话,还要加上一个-I参数,象这个样子:
命令:
configure.bat --cflags -Id:/include 
这里 d:/include 里放了几个图形支持编译要用到的头文件,我已经贴到附件里了。唉,当年如果有人贴上来就好了,不用我找那么费劲了。嘿。
这一步是编译的基础,注意执行过程中有没有错误,如果有的话,一般不会是太严重的。都是拷贝文件失败什么的,检查一下失败文件的属性权限一般就可以搞定了。

3. 第三步,嘿,开始make, 这个过程其实包括VC下面的compile和link过程。  一般在第一次编译的时候要执行nmake bootstrap, 以后再cvs update更新代码的时候可能就不需要了。
命令: 
nmake bootstrap
nmake
可能的错误:
找不到nmake, 嘿,看看是不是vc的bin目录没有加到path里。 
说link失败,执行which link看看现在是在用哪个link,一般出现这个错误是因为使用了cygwin的link,你要用vc编译当然要用VC的link了。我现在一般是把cygwin的link改名。嘿。反正我也不要用它。
还有错误?那 nmake clean一下吧。再nmake,也许就好了。 嘿。

4. 如果第三步成功了,嘿,那就没啥问题了。安装就是了。
命令:
nmake install INSTALL_DIR=D:/EMACS
安装到D:/emacs目录下,当然你可以随便指定啦。

5. 第二步中,你已经指定了图像支持的头文件,可是运行的时候还需要动态库,我也已经放进附件里了。把那些dll文件放到emacs/bin 目录下就ok了。

6. runemacs。 it's cool! BTW,现在的图标比以前的好看多了。

在Windows下编译Emacs的更多相关文章

  1. windows下编辑器Emacs的安装与配置

    一年成为Emacs高手(像神一样使用编辑器) http://blog.csdn.net/redguardtoo/article/details/7222501   原创作品,允许转载,转载时请务必以超 ...

  2. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  3. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  4. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  5. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  6. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

  7. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

  8. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  9. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

随机推荐

  1. fedora常见问题和解决方案

    fedora作为linux主流发行版之一,大部分功能还是很赞的.只是在美观性和其他一些细节上还是需要手工调整才有更加体验. 以下解决方案,使用fedora20+gnome3环境 eclipse界面难看 ...

  2. ef查询mysql数据库数据支持DbFunctions函数

    1.缘由 快下班的时候,一同事说在写linq查询语句时where条件中写两时间相减大于某具体天数报错:后来仔细一问,经抽象简化,可以总结为下面的公式: a.当前时间 减去 某表时间字段 大于 某具体天 ...

  3. HBase(六)HBase整合Hive,数据的备份与MR操作HBase

    一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...

  4. Ionic入门八:头部与底部

    1.Header(头部) Header是固定在屏幕顶部的组件,可以包如标题和左右的功能按钮. ionic 默认提供了许多种颜色样式,你可以调用不同的样式名,当然也可以自定义一个. <div cl ...

  5. HDU - 2199 Can you solve this equation? 二分 简单题

    Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  6. 历史文章分类汇总-Anaconda安装第三方包(whl文件)

    本文主要是对公众号之前发布的文章进行分类整理,方面大家查阅,以后会不定期对文章汇总进行更新与发布.   一.推荐阅读: Anaconda安装第三方包(whl文件) 福布斯系列之数据分析思路篇 福布斯系 ...

  7. UDP转TCP隧道工具udptunnel

    UDP转TCP隧道工具udptunnel   在部分受限的网络环境中,UDP协议被受限,但TCP不受限制.Kali Linux提供一个UDP转TCP隧道工具udptunnel.该工具可以分别启动服务器 ...

  8. Python如何将RGB图像转换为Pytho灰度图像?

    我正尝试使用matplotlib读取RGB图像并将其转换为灰度.在matlab中,我使用这个: 1 img = rgb2gray(imread('image.png')); 在matplotlib t ...

  9. 机器学习之路: python 回归树 DecisionTreeRegressor 预测波士顿房价

    python3 学习api的使用 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.datasets import ...

  10. BZOJ 4213 贪吃蛇 上下界费用流 网络流

    https://darkbzoj.cf/problem/4213 https://www.cnblogs.com/DaD3zZ-Beyonder/p/5733326.html 题目描述 dbzoj又崩 ...