Windows下编译GNU Emacs23.2的几点小问题

闲来无聊自己编译个emacs玩玩。

 

使用gcc 4.5.0 (MinGW), win32-api 3.15

 

简单地上GNU网站 http://www.gnu.org/software/emacs/#Obtaining 去下载源代码。

 

在此之前,需要下载许多图形库来创建emacs在窗口模式下需要的图标。

网上有比较多的例子,在sourceforge   http://sourceforge.net/projects/gnuwin32/files/  可以下载到所有需要的图形库

在现在2011-1-13,当前可以下载到的是:

1. jpeg 

2. png

3. tiff

4. gif

5. xpm

6. zlib

 

-------------另有一点忘了说了,xpm是需要源代码包的,那个src-exe 或者zip,安装之后把src/xpm/3.5.1/libXpm-3.5.1-src/lib下的xmp.h和simx.h一起复制到MinGW/include/X11下,否则即使装了xpm也会找不到的。

-------------make bootstrap的过程在一开始有一段有点像抽风。。。不过要耐心等。。。

 

 

由于都是.exe安装包,直接把路径都选在X:/MinGW (X是盘符,或者换成自定义的路径,但必须跟MinGW原来的文件放在一起)

 

然后进入emacs-23.2的nt文件夹,在cmd下运行

configure.bat --with-gcc --no-debug --no-cygwin

 

如果缺少图形库,会在configure的末尾提示失败,根据指示操作就行了。

 

然后是运行make

 

make bootstrap

 

如果没有修改mingw32-make的文件名的,就把make改成mingw32-make

 

就是在make的地方出现了一个问题:

win32.c_PROCESS_MEMORY_COUNTERS_EXpsapi.h 的同一个struct 重定义

具体的error我没记下来,但总之是emacs文件夹下的w32.o中_PROCESS_MEMORY_COUNTERS_EX与MinGW/include文件夹下的psapi.h中重定义了,上网一问,原来是w32-3.15中新增加的这个结构体,可能是emacs23-2没有考虑到新版本的w32api这个改变,所以人为声明了。

 

解决方法是找到MinGW/include下的psapi.h,定位到

 

 typedef struct _PROCESS_MEMORY_COUNTERS_EX {

DWORD cb;

DWORD PageFaultCount;

DWORD PeakWorkingSetSize;

DWORD WorkingSetSize;

DWORD QuotaPeakPagedPoolUsage;

DWORD QuotaPagedPoolUsage;

DWORD QuotaPeakNonPagedPoolUsage;

DWORD QuotaNonPagedPoolUsage;

DWORD PagefileUsage;

DWORD PeakPagefileUsage;

DWORD PrivateUsage;

 } PROCESS_MEMORY_COUNTERS_EX,*PPROCESS_MEMORY_COUNTERS_EX;

注释掉
重新make bootstrap,就可以了。
完成之后可以把这个注释去掉。
最后一步是make install
完成之后,不要忘了把源代码文件夹下的lisp文件夹拷到新安装的目录下覆盖,否则会缺少很多东西不能运行的,最典型的就是一开始遇到
can't load file: china-util
OK, 酱紫就可以了!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值