我从下载 emacs 22.3
http://ftp.gnu.org/pub/gnu/emacs/emacs-22.3.tar.gz
在我的 Ubuntu 12.04.2 LTS 桌面上编译/制作不起作用。
配置似乎工作正常。
Make 很早就失败了:在子目录 lib-src 中,makefile 的第 148 行有问题。它确实看起来像一个问题:
ALL_CFLAGS = -D_BSD_SOURCE -DHAVE_CONFIG_H
-I. -I../src -I${srcdir} -I${srcdir}/../src ${LDFLAGS} ${CPPFLAGS} ${CFLAGS}
那是第 147 行和第 148 行:我猜第 148 行应该是第 147 行的延续。它以选项卡开头。没有 \ 在第 147 行的末尾。我放了一个并再次尝试。我在第 150 行遇到错误。我输入了另一个 \ 。几行之后事情变得更严重了,缺少 \ 实际上导致的事情不是语法错误,而是以更微妙的方式使 make break 发生。
无论如何,我不应该编辑 Makefile(我可以说,他们的权限是只读的 ;-) )。我究竟做错了什么?我可以坚持下去,但如果我可以改为例如提供一个标志以使其在 emacs-22.3-makefile-compatibility 模式下运行,那会好得多。
[对于那些想知道“为什么”的人——我有一些我的工作需要的脚本,它们从未在 emacs >=23 中工作过;在我的旧机器上我自己编译了 emacs22 没问题,但是在这台新的 Ubuntu 机器上我没有 emacs22 并且 ubuntu 12.04 存储库中没有 emacs22 所以我有点绝望]
好的,所以有人建议我尝试
$ CPPFLAGS="-P" ./configure
这解决了 lib-src 中回车/制表符的所有问题。但实际上它只是让我达到了我设法手动获取的地步:
cd src; make all \
CC='gcc' CFLAGS='-g -O2 -Wno-pointer-sign ' CPPFLAGS='-D_BSD_SOURCE -P' \
LDFLAGS='-Wl,-znocombreloc' MAKE='make'
make[1]: Entering directory `/home/buzzard/local/emacs-22.3/src'
gcc -c -D_BSD_SOURCE -P -Demacs -DHAVE_CONFIG_H -I. -I/home/buzzard/local/emacs-22.3/src -D_BSD_SOURCE -g -O2 -Wno-pointer-sign pre-crt0.c
make[1]: *** No rule to make target `/usr/lib/crt1.o', needed by `temacs'. Stop.
make[1]: Leaving directory `/home/buzzard/local/emacs-22.3/src'
make: *** [src] Error 2
嗯...如果我知道自己在做什么,我会发布其他零碎的东西,但老实说,我从来没有理解过制作。我一直只是希望它会工作......