我写信是想看看您最近是否尝试过编译 Emacs。我想编译 emacs-25.1 但遇到了分段错误。如果你想知道我为什么要编译,或者为什么我在这里问,请继续阅读......
我今天升级到 Ubuntu 16.10 并且 emacs-24.5 仍在运行,但工具栏图标变得不可见。经过适当的谷歌搜索,我发现这个问题是随着时间的推移而出现的,通常是gtk+、桌面主题或Emacs本身的缺陷。最近的帖子似乎说 Emacs 代码中存在一个自修复以来的错误(https://bugs.archlinux.org/task/48862)。
我想我会尝试 emacs25,看看它是否在那里修复。许多人建议使用这里提供的存储库(deb http://ppa.launchpad.net/adrozdoff/emacs/ubuntu yakkety main),但是由于我以前从未见过的原因,apt-get 拒绝了该存储库:
W: The repository 'http://ppa.launchpad.net/adrozdoff/emacs/ubuntu yakkety Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
Run Code Online (Sandbox Code Playgroud)
我不介意编译程序,所以我会继续前进。
我的第一个想法是从该网站获取源 deb 包,但尝试构建包导致分段错误。
假设那个包装有问题,我尝试从源代码构建。我以相同的分段错误结束:
$ wget http://ftp.gnu.org/gnu/emacs/emacs-25.1.tar.gz
$ tar xzvf emacs-25.1.tar.gz
$ cd emacs-25.1
$ ./configure --prefix=/usr/local
$ make
Run Code Online (Sandbox Code Playgroud)
几千行后,我看到了重建包的相同段错误
Loading emacs-lisp/eldoc...
Loading cus-start...
Loading tooltip...
Loading /home/pauljohn/LinuxDownloads/Ubuntu/sources/emacs/emacs-25.1/lisp/leim/leim-list.el (source)...
Finding pointers to doc strings...
Finding pointers to doc strings...done
Dumping under the name emacs
Makefile:736: recipe for target 'bootstrap-emacs' failed
make[1]: *** [bootstrap-emacs] Segmentation fault (core dumped)
make[1]: Leaving directory '/home/pauljohn/LinuxDownloads/Ubuntu/sources/emacs/emacs-25.1/src'
Makefile:398: recipe for target 'src' failed
make: *** [src] Error 2
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索错误消息时,我没有找到修复方法。当然,随着时间的推移,我确实发现了很多 emacs 段错误,但它们通常会提供更多信息。我认为提及 Makefile:736 是指 src 目录中的 Makefile:
bootstrap-emacs$(EXEEXT): temacs$(EXEEXT)
$(MAKE) -C ../lisp update-subdirs
ifeq ($(CANNOT_DUMP),yes)
ln -f temacs$(EXEEXT) $@
else
$(RUN_TEMACS) --batch --load loadup bootstrap
ifneq ($(PAXCTL_dumped),)
$(PAXCTL_dumped) emacs$(EXEEXT)
endif
mv -f emacs$(EXEEXT) $@
endif
Run Code Online (Sandbox Code Playgroud)
我已经很久没有遇到这种情况了。
我找到了有关构建 Emacs 的过去段错误的页面
1 https://bbs.archlinux.org/viewtopic.php?id=197841。在 Arch linux 中,安装了一个“强化”包,因此 Emacs 失败了。我发现我有一个来自 Ubuntu 16.10 的包“hardening-includes”,我删除了它以查看结果是否会改变。不!
2 https://lists.gnu.org/archive/html/bug-gnu-emacs/2015-04/msg00371.html。有一个错误的编译器标志。我没有那个标志。
3 http://emacs.1067599.n8.nabble.com/bug-20190-Building-emacs-24-4-against-GCC-5-0-td352965.html说有一个环境标志应该受到指责。我没有那个。
Emacs 错误报告过程 ( https://debbugs.gnu.org/Emacs.html ) 对我来说很困难。我不知道如何提交一个新的错误。
我上传了整个配置/制作输出,以防万一:
http://pj.freefaculty.org/scraps/emacs-build-fail-20161013.txt
稍事休息后,我发现这个问题在Yakkety Yak发布之前就被发现了,但修复程序并未包含在软件包中。如果你看这里
https://bugs.launchpad.net/ubuntu/+source/emacs24/+bug/1623585
你应该在我的帖子最后找到我说我确实重建了他们提到的包源,并且我可以确认它确实构建并且 Emacs 工具栏图标将重新出现。
为了完整起见,emacs 25 在 Ubuntu 16.10 下无法正确构建的原因似乎是由于 Ubuntu 16.10 上 gcc 使用的默认标志发生了变化。要构建 emacs,您需要将 -no-pie 添加到标志中。以下作品:
$ ./autogen.sh
$ ./configure CFLAGS=-no-pie <other configure options>
Run Code Online (Sandbox Code Playgroud)
直到 git 存储库中进行更新
归档时间: |
|
查看次数: |
2312 次 |
最近记录: |