我感觉比原来编译慢,comp-speed = 0,可能多了几个lisp文件编译成eln。
前几天在windows上编译emacs.exe是ok,但是有几个和tramp相关的lisp文件编译报错,导致dired-mode报错。又切到master分支测试了,编译ok。。。就没再切到native-comp分支。
编译时候加了 NATIVE_FAST_BOOT=1
?去掉之后如果还有权限问题,可以用 root 把/usr/share/emacs/28.0.50/lisp/
里的 el 文件都编译成 eln.
我在 Macbook Pro 2013 上编译master需要11分钟。完全编译 native compile 分支需要40分钟,如果启用NATIVE_FAST_BOOT=1
选项,编译只需要21分钟。编译时间完全可以接受了。
我完整编译了Emacs。所以Emacs内置的el应该在编译安装的时候就已经全部编译成了eln。电脑太烂,完整编译elpa里面的el很花时间,所以为了省时间我开了延迟编译。这样的话不知道为什么Emacs还是会编译Emacs内置的el。这样的话就有了权限问题。这还好办,可以按你说的单独用sudo开Emacs去编译。
可是麻烦事是总是会报错“failed to provide feature”或者“Symbol’s function definition is void”。前面这类错误不知道原因,后面这类错误似乎和dynamic binding有关系。挺烦的。不知道我那里搞错了。
多谢。我自己也试过了。差距比你的结果大很多。看样子还是我电脑太烂了。
我编译的版本出了很多问题。主要是下面这几类。
- failed to provide feature
- byte-code: symbol’s function definition is void:
- Symbol’s value as variable is void:
- failed to define function
- void-variable *
我完整编译了emacs。elpa里面的包打开延迟编译,让它们慢慢编。后来被弄烦了,就花时间把elpa里面的包都编译了。可还是出现上面这些问题。不知道问题出在哪里?会不会是动态作用域的问题?eln不是处理不了动态作用域的问题嘛。
我用的是spacemacs develop branch,archlinux on wsl
我这里会有少数包出现错误 can’t native compile a non lexical scoped function
导致无法编译,例如yasnippet
,tree-mode
,cdlatex
。没有WSL环境来测试,所以不清楚你遇到的是什么问题。
你遇到的应该就是作者下面要解决的问题。
我遇到的问题基本上把我常用的功能都破坏掉了,而且这些问题还不能稳定复现。真是头疼。
好的。多谢回复。那我就先不折腾了。老老实实地用我的emacs27吧。
在linux上用Emacs已经很快了
“These requirements led to the choice of a Lisp dialect as Emacs’s language inthe first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changingthe ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the codewould be unacceptable.”
– Evolution of Emacs Lisp Stefan Monnier
嗯。不折腾了,不折腾了。不划算。
linux上什么都不改就能直接编译通过。
编译通过是一回事。正常运行是另一会事啊。
最新的emacs native-comp分支在centos 7.2上顺利编译通过,运行非常稳定。如org-mode,python + lsp-mode/evil/helm/swiper。
我在archlinux on wsl 1上面就是不行。也许又是wsl1的问题吧。暂时不折腾了。
大佬,你图形界面怎么解决的,我编译处理没有图形界面? ps: macos系统
Hi @cireu ,
is quite difficult to understand from here, also using google translator does not help
I’ve never tried WSL and is the first time somebody report an attempt (that I’m aware of al least). It looks like some very fundamental/basic problem (maybe of the libgccjit instance), it should definitely be broken down in a bug report if of interest.
Regarding deferred compilation, the triggering mechanism is going to be radically changed and simplified once I merge dynamic scope support. Hopefully I manage to merge this last this weekend.
Ciao!
Andrea
Thanks for your help!