Ubuntu-16.10中缺少Emacs工具栏图标,很难编译emacs24和25

我写信是为了看你最近是否尝试过编译Emacs。 我想编译emacs-25.1但是遇到了分段错误。 如果你想知道我为什么要编译,或者为什么我在这里问,请继续阅读……

我今天升级到Ubuntu 16.10并且emacs-24.5仍在运行,但工具栏图标已变为不可见。 经过适量的谷歌搜索,我发现这个问题已经出现,通常是gtk +,桌面主题或Emacs本身的缺陷。 最近的post似乎说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. 

我不介意编译程序,所以我会继续前进。

我的第一个想法是从该网站采取源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 

几千行之后,我看到了相同的段错误,我看到了重建包

 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 

在谷歌搜索错误消息时,我找不到修复。 当然,我确实发现了大量的emacs seg故障,但它们通常会提供更多信息。 我提到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 

我很长一段时间没有遇到这种情况。

我找到了有关构建Emacs的过去seg故障的页面

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 )对我来说很困难。 我无法想象如何提交新的bug。

我上传了整个configure / make输出,以备提供信息:

http://pj.freefaculty.org/scraps/emacs-build-fail-20161013.txt

稍作rest后,我发现这个问题是在Yakkety Yak发布之前发现的,但修复程序没有包含在软件包中。 如果你看这里

https://bugs.launchpad.net/ubuntu/+source/emacs24/+bug/1623585

你应该找到我的post,说我已经重建了他们提到的包源,我可以确认它确实构建了,并且Emacs工具栏图标将重新出现。

为了完整起见,似乎emacs 25无法在Ubuntu 16.10下正确构建的原因是由于Uccntu 16.10上gcc使用的默认标志的变化。 要构建emacs,需要在标志中添加-no-pie。 以下作品:

 $ ./autogen.sh $ ./configure CFLAGS=-no-pie  

直到在git repo中进行更新