Windows 10 Emacs 28.1 无法运行

今天 第一次 使用 28.1 版本时,正常启动,并在后台执行 native-comp 相关操作,有个 *Async native-comp * (名字大概是这个) buffer,之后没有见过

之后启动不知道是什么问题,一加载配置就自动退出

目前 emacs -q 可以启动

我的配置没有任何问题,27.2 版本一直正常使用
为什么我这么肯定配置没有问题呢,因为我已经使用过 28.1 进去过Emacs,Termux 的 28.1 正常使用
之后不知道什么问题就一直启动就退出,启动就退
重启电脑过也无用
不知道你们有没有遇见过????
目前正在一点点的增加配置重加载… :sweat_smile:

************** 更新 *******************
在一行一行的添加配置时,不知道问题出在哪,同一行的配置每次启动的时候,有时候可以,有时不可以 :roll_eyes:

elc删完没有? 我之前win10 20H版本,运行一会儿会卸载不用的eln,调试发现是LdrUnloadDll处死锁,导致emacs卡死,升级win10到最新版解决了。不过win10体验没win7流畅,之前我一直用win7。

elc 文件在哪??
我把 Emacs 程序包文件夹换了好多次了
而且我也使用过 everything 把 有 emacs 字眼的文件夹全部清理了,又试了,还是不行
现在我使用配置时,连 --dbug-init 都开不了,直接退出
而且当我一行一行配置的时候还发现, 只要添加 (global-linum-mode 1) 都会直接启动马上退出了
Temux Emacs 28.1 完全正常使用同一配置下 :cold_face:

.emacs.d文件夹你知道吧,更名,然后新弄个.emacs.d文件夹重新配置呢?

感谢,我好像知道问题在那了
28.1 正式版,并不是只要你启动 native-comp 就帮你把全部包编译,而是当你进入某个需要的模式才帮你编译系统包
我不是很理解啊哈,因为每次我都是直接 emacs -q 启动测试的,-q 启动的话只帮编译了两个包

native-comp是编译你用到的elc,如果你没有编译成elc的话,它是不会编译el文件的。 不过你用官方的windows包是没有装gcc和libgccjit的,是不可能发生编译的。。(不过它自带一些编译好的eln文件) 我是直接用的这里的native-comp https://github.com/kiennq/emacs-build/releases,它自带gcc那些了。

1 个赞

native-comp 的原理是什么??
大概要编译多久啊??? 当我打开 org mode 时,它编译了好多包 和 好久啊
而且我都不清楚他有没有编译完,看 buffer 输出,也不清楚
不知道是不是没有编译完全,下次我再开 Emacs 的时候也是直接退出

你清空 .emacs.d 目录下的 elpa 文件夹应该就可以了。然后重新下载包。 第一次启动 Emacs 时,如果你在 msys2 中安装了 gcc 和相关依赖,就会启用 native-comp,会自动编译你的 elc 为 eln,默认是放在 .emacs.d/eln-cache 这个文件夹下。可能会有点卡顿,你不要急着退出 Emacs ,等编译完成就好了

我用的是 stright.el
目前还在测试是什么问题,已经把 .emacs.d 清空,打算 直接跑一下 Emacs,看它编译多少包
真的很奇怪,只编译了


就不跑了 :sweat_smile:
我该怎么做才能让他一次性把全部包编译了??
因为我注意到没有编译完全包,下次启动会直接退出

看到 finished 说明编译完成了,如果你下次又用到别的包,它又会自动去编译。 用户的体验就是用到新特性会卡一下,或者弹窗有一堆 warning,不要担心,等待完成就好了。

用straight 也是类似,把 elc 都清空重新编译就好了。

我该怎么做才能让他一次性把全部包编译了?? 因为我注意到没有编译完全包,下次启动会直接退出

你要自己去下载源码,编译 emacs,同时编译全部内置包。构建时用下面的命令

make -j$(nproc)  NATIVE-FULL-AOT=1

对于你的第三方包,我不是很清楚通过 straight 如何去全部编译。

我之前整理过一个编译流程,你可以参考一下。把源代码换成 emacs 28 的就可以了

好的,谢谢,我再解决解决

唉,心累,不知道怎么解决了
当我上次打开 Emacs ,进入 org mode ,把该编译的都编译了
下次再进入 Emacs 时,直接退出,运行不了
Windows 10 Emacs 28.1 版本 GNU Emacs 28.1 (build 52, x86_64-w64-mingw32) of 2022-04-05

不知道别人编译好的我能不能用??我去偷一个还好 :sweat_smile:

新版可能插件还没有跟上。

我一直在用prelude。下载安装Emacs 28.1,并且重新安装prelude。C-c C-p准备运行Python,出现"Process Python exited abnormally with code 49",不成功。回退,用Emacs 27.2+prelude后,一切正常。

这个策略真的是非常不友好呀,编译过程完全没反应,为啥这种策略就发正式版了?

这种每个人都会遇到的问题不解决就发正式版完全不负责任呀。

1 个赞

你这意思是 Emacs28.1 问题吗??
我个人感觉问题还是出在Emacs 28.1 上

So?? :sob:
我真的难受啊,我看见 native-comp 是真的强,无论是在启动速度还是在性能方面

我也觉得这种方式很烦,用户的直观体验就是卡,不断弹窗,而且是强行置顶那种。

个人觉得应该发两个版本,一个不带 native-comp的,让用户选择。毕竟要体验 native-comp 还是要用户自己去安装依赖的。

所以我索性自己编译了,提前把所有内置包和第三方包都编译了,编译一次,以后就不用管了。不过这样就会造成要多编译很多永远用不到的内置包,编译时间更长,Emacs的磁盘占用更大。

怎么把第三包直接编译进去??
我看了你的教程。似乎没有说到可以这样做
我只知道可以使用 (native-compile-async “/path/to/packages” 'recursively) 这个添加