| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1483 人关注过本帖
标题:【转载】Win8 64位环境下使用MinGW-builds编译原生64位开发版GNU Emacs
取消只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:2 
【转载】Win8 64位环境下使用MinGW-builds编译原生64位开发版GNU Emacs
查了一下帖子 我第一次编译还是2012年9月份

纪念一下逝去的青春

http://all-things-zklhp.

;; **************************************************************************************************************
;; Author: zklhp
;; Email: zklhp@
;; QQ: 493165744
;; Last Update: 2014-01-06
;; Licensed under CC BY-SA 3.0
;; **************************************************************************************************************

    准备
        MinGW-builds

        http://
        MSYS

        http://
        用bzr或git获得最新的源码
        阅读源码包里面的nt/INSTALL
        准备所需的图形库文件

        nt/INSTALL里面提到了一些可以下载 注意这里需要下载Win64位的 建议把这些文件单独放在一个文件夹里面

        需要的是dll文件和.h文件 对我来说 png支持是比较重要的 所以我去这里下载了相应的库

        http://www.
    开工
        运行MSYS目录里面的msys.bat 打开一个终端 以下的所有操作均是在这个终端里面进行的
        生成编译环境

    ./autogen.sh

        配置

    可以用我下面这个高度优化的例子

    CFLAGS='-Ofast -march=corei7-avx -I/e/mingw-builds/opt/include -ftree-parallelize-loops=4 -pipe' LDFLAGS='-I/e/mingw-builds/opt/lib' /f/diy/emacs/configure --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --with-wide-int --prefix=/z/emacs --enable-checking

    注意 -flto和configure里面的链接时优化不要开 据说GCC自己的代码开了都编译不过。。。

        编译

    ./make -j 8

        安装

    ./make install prefix=/e/emacs

    测试

    下面给出一个我用来测试Emacs效率的代码 一个分形程序

    (defun iterate (xx yy)

      (let*
          (
           (BAILOUT 16.0)
           (MAX_ITERATIONS 1000)
           (bail_val 0)
           (cr (- yy 0.5))
           (ci xx)
           (zi 0.0)
           (zr 0.0)
           (i 0)
           )
        (while (and (< i MAX_ITERATIONS) (< bail_val BAILOUT))
          (setq i (+ 1 i))
          (setq temp (* zr zi))
          (setq zr2 (* zr zr))
          (setq zi2 (* zi zi))
          (setq zr (+ (- zr2 zi2) cr))
          (setq zi (+ temp temp ci))

          (setq bail_val (+ zi2 zr2)))
        i)
      )

    (defun mandelbrot()
      (setq yy -39)
      (while (< yy 39)

        (setq yy (+ 1 yy))

        (setq xx -39)
        (while (< xx 39)
          (setq xx (+ 1 xx))

          (if (= (iterate (/ xx 40.0) (/ yy 40.0)) 1000)
              (princ  "*")
            (princ  " ")
            )
          )
        (princ  "\n")
        ))
    (setq time-1-in-ms (current-time))
    (mandelbrot)
    (setq time-2-in-ms (current-time))
    (setq time-1-in-ms
          (+ (* 1000 (cadr time-1-in-ms))
             (/ 1000 (nth 2 time-1-in-ms))
             )
          )
    (setq time-2-in-ms
          (+ (* 1000 (cadr time-2-in-ms))
             (/ (nth 2 time-2-in-ms) 1000)
             )
          )
    (princ (format "Elapsed %d ms" (- time-2-in-ms time-1-in-ms)))

    用法

    emacs -Q -l emacs-bench.elc -batch > i7.txt

    典型的数据如下
    平台  操作系统  Emacs版本  编译优化参数  用时 (s)
    Core2 Duo T5750  XP 32-bit  24.3 32-bit  -O3  4.4
    Core i7-3630QM  Win8 64-bit  24.3.50 32-bit  -Ofast -march=corei7  2.4
    Core i7-3630QM  Win8 64-bit  24.3.50 64-bit  -Ofast -march=corei7-avx -ftree-parallelize-loops=4  1.5

    效果显著啊

搜索更多相关主题的帖子: Email 开发 青春 
2014-01-06 09:41
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
直接复制过来全乱了 有兴趣可以去源地址看。。
2014-01-06 09:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用wp231957在2014-1-6 09:41:38的发言:

厉害  看不懂

你这也太快了。。
2014-01-06 09:42
快速回复:【转载】Win8 64位环境下使用MinGW-builds编译原生64位开发版GNU Emac ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028947 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved