![从 trunk 构建 Emacs,无需管理员访问权限](https://linux22.com/image/29475/%E4%BB%8E%20trunk%20%E6%9E%84%E5%BB%BA%20Emacs%EF%BC%8C%E6%97%A0%E9%9C%80%E7%AE%A1%E7%90%86%E5%91%98%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90.png)
我克隆了官方trunk
分支:
bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk
然后我建造了autoconf
,automake
和texinfo
.我还更新了我的PERL5LIB
内容以使其包含/path/to/automake/share/automake-1.13
(否则我会收到错误:)can't locate Automake/Config.pm
。
然后我运行:
> autogen.sh
然后我就跑了./configure --without-gif --prefix=/some/path
。
然后我运行make
并收到以下错误:collect2: error: ld returned exit status
。请参阅下面的完整跟踪:
gcc -std=gnu99 -I. -I../src -I../lib -I/home/john/bin/emacs/rc/emacs-24.3/lib-src -I/home/john/opt/emacs/rc/emacs-24.3/lib-src/../src -I/home/
john/bin/emacs/rc/emacs-24.3/lib-src/../lib -Wl,-znocombreloc -g3 -O2 -DEMACS_NAME="\"GNU Emacs\"" \
-DVERSION="\"24.3\"" /home/john/bin/emacs/rc/emacs-24.3/lib-src/etags.c \
regex.o ../lib/libgnu.a -o etags
regex.o: In function `stpncpy':
/usr/include/bits/string3.h:160: multiple definition of `stpncpy'
/tmp/ccntBfBN.o:/usr/include/bits/string3.h:160: first defined here
regex.o: In function `realpath':
/usr/include/bits/stdlib.h:37: multiple definition of `realpath'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:37: first defined here
regex.o: In function `ptsname_r':
/usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:53: first defined here
regex.o: In function `wctomb':
/usr/include/bits/stdlib.h:74: multiple definition of `wctomb'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:74: first defined here
regex.o: In function `mbstowcs':
/usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:95: first defined here
regex.o: In function `wcstombs':
/usr/include/bits/stdlib.h:114: multiple definition of `wcstombs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:114: first defined here
regex.o: In function `read':
/usr/include/bits/unistd.h:35: multiple definition of `read'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:35: first defined here
regex.o: In function `pread':
/usr/include/bits/unistd.h:57: multiple definition of `pread'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:57: first defined here
regex.o: In function `pread64':
/usr/include/bits/unistd.h:77: multiple definition of `pread64'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:77: first defined here
regex.o: In function `readlink':
/usr/include/bits/unistd.h:99: multiple definition of `readlink'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:99: first defined here
regex.o: In function `readlinkat':
/usr/include/bits/unistd.h:121: multiple definition of `readlinkat'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:121: first defined here
regex.o: In function `getcwd':
/usr/include/bits/unistd.h:136: multiple definition of `getcwd'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:136: first defined here
regex.o: In function `getwd':
/usr/include/bits/unistd.h:150: multiple definition of `getwd'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:150: first defined here
regex.o: In function `confstr':
/usr/include/bits/unistd.h:165: multiple definition of `confstr'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:165: first defined here
regex.o: In function `getgroups':
/usr/include/bits/unistd.h:181: multiple definition of `getgroups'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:181: first defined here
regex.o: In function `ttyname_r':
/usr/include/bits/unistd.h:197: multiple definition of `ttyname_r'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:197: first defined here
regex.o: In function `getlogin_r':
/usr/include/bits/unistd.h:213: multiple definition of `getlogin_r'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:213: first defined here
regex.o: In function `gethostname':
/usr/include/bits/unistd.h:230: multiple definition of `gethostname'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:230: first defined here
regex.o: In function `getdomainname':
/usr/include/bits/unistd.h:248: multiple definition of `getdomainname'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:248: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `stpncpy':
/usr/include/bits/string3.h:160: multiple definition of `stpncpy'
/tmp/ccntBfBN.o:/usr/include/bits/string3.h:160: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `realpath':
/usr/include/bits/stdlib.h:37: multiple definition of `realpath'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:37: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `ptsname_r':
/usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:53: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `wctomb':
/usr/include/bits/stdlib.h:74: multiple definition of `wctomb'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:74: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `mbstowcs':
/usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:95: first defined here
../lib/libgnu.a(c-strcasecmp.o): In function `wcstombs':
/usr/include/bits/stdlib.h:114: multiple definition of `wcstombs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:114: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `stpncpy':
/usr/include/bits/string3.h:160: multiple definition of `stpncpy'
/tmp/ccntBfBN.o:/usr/include/bits/string3.h:160: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `realpath':
/usr/include/bits/stdlib.h:37: multiple definition of `realpath'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:37: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `ptsname_r':
/usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:53: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `wctomb':
/usr/include/bits/stdlib.h:74: multiple definition of `wctomb'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:74: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `mbstowcs':
/usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:95: first defined here
../lib/libgnu.a(c-strncasecmp.o): In function `wcstombs':
/usr/include/bits/stdlib.h:114: multiple definition of `wcstombs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:114: first defined here
../lib/libgnu.a(getopt.o): In function `stpncpy':
/usr/include/bits/string3.h:160: multiple definition of `stpncpy'
/tmp/ccntBfBN.o:/usr/include/bits/string3.h:160: first defined here
../lib/libgnu.a(getopt.o): In function `realpath':
/usr/include/bits/stdlib.h:37: multiple definition of `realpath'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:37: first defined here
../lib/libgnu.a(getopt.o): In function `ptsname_r':
/usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:53: first defined here
../lib/libgnu.a(getopt.o): In function `wctomb':
/usr/include/bits/stdlib.h:74: multiple definition of `wctomb'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:74: first defined here
../lib/libgnu.a(getopt.o): In function `mbstowcs':
/usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:95: first defined here
../lib/libgnu.a(getopt.o): In function `wcstombs':
/usr/include/bits/stdlib.h:114: multiple definition of `wcstombs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:114: first defined here
../lib/libgnu.a(getopt.o): In function `gets':
/usr/include/bits/stdio2.h:94: multiple definition of `gets'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:94: first defined here
../lib/libgnu.a(getopt.o): In function `fgets':
/usr/include/bits/stdio2.h:109: multiple definition of `fgets'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:109: first defined here
../lib/libgnu.a(getopt.o): In function `fgets_unlocked':
/usr/include/bits/stdio2.h:125: multiple definition of `fgets_unlocked'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:125: first defined here
../lib/libgnu.a(getopt.o): In function `read':
/usr/include/bits/unistd.h:35: multiple definition of `read'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:35: first defined here
../lib/libgnu.a(getopt.o): In function `pread':
/usr/include/bits/unistd.h:57: multiple definition of `pread'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:57: first defined here
../lib/libgnu.a(getopt.o): In function `pread64':
/usr/include/bits/unistd.h:77: multiple definition of `pread64'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:77: first defined here
../lib/libgnu.a(getopt.o): In function `readlink':
/usr/include/bits/unistd.h:99: multiple definition of `readlink'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:99: first defined here
../lib/libgnu.a(getopt.o): In function `readlinkat':
/usr/include/bits/unistd.h:121: multiple definition of `readlinkat'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:121: first defined here
../lib/libgnu.a(getopt.o): In function `getcwd':
/usr/include/bits/unistd.h:136: multiple definition of `getcwd'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:136: first defined here
../lib/libgnu.a(getopt.o): In function `getwd':
/usr/include/bits/unistd.h:150: multiple definition of `getwd'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:150: first defined here
../lib/libgnu.a(getopt.o): In function `confstr':
/usr/include/bits/unistd.h:165: multiple definition of `confstr'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:165: first defined here
../lib/libgnu.a(getopt.o): In function `getgroups':
/usr/include/bits/unistd.h:181: multiple definition of `getgroups'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:181: first defined here
../lib/libgnu.a(getopt.o): In function `ttyname_r':
/usr/include/bits/unistd.h:197: multiple definition of `ttyname_r'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:197: first defined here
../lib/libgnu.a(getopt.o): In function `getlogin_r':
/usr/include/bits/unistd.h:213: multiple definition of `getlogin_r'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:213: first defined here
../lib/libgnu.a(getopt.o): In function `gethostname':
/usr/include/bits/unistd.h:230: multiple definition of `gethostname'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:230: first defined here
../lib/libgnu.a(getopt.o): In function `getdomainname':
/usr/include/bits/unistd.h:248: multiple definition of `getdomainname'
/tmp/ccntBfBN.o:/usr/include/bits/unistd.h:248: first defined here
../lib/libgnu.a(getopt1.o): In function `stpncpy':
/usr/include/bits/string3.h:160: multiple definition of `stpncpy'
/tmp/ccntBfBN.o:/usr/include/bits/string3.h:160: first defined here
../lib/libgnu.a(getopt1.o): In function `realpath':
/usr/include/bits/stdlib.h:37: multiple definition of `realpath'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:37: first defined here
../lib/libgnu.a(getopt1.o): In function `ptsname_r':
/usr/include/bits/stdlib.h:53: multiple definition of `ptsname_r'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:53: first defined here
../lib/libgnu.a(getopt1.o): In function `wctomb':
/usr/include/bits/stdlib.h:74: multiple definition of `wctomb'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:74: first defined here
../lib/libgnu.a(getopt1.o): In function `mbstowcs':
/usr/include/bits/stdlib.h:95: multiple definition of `mbstowcs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:95: first defined here
../lib/libgnu.a(getopt1.o): In function `wcstombs':
/usr/include/bits/stdlib.h:114: multiple definition of `wcstombs'
/tmp/ccntBfBN.o:/usr/include/bits/stdlib.h:114: first defined here
../lib/libgnu.a(getopt1.o): In function `gets':
/usr/include/bits/stdio2.h:94: multiple definition of `gets'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:94: first defined here
../lib/libgnu.a(getopt1.o): In function `fgets':
/usr/include/bits/stdio2.h:109: multiple definition of `fgets'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:109: first defined here
../lib/libgnu.a(getopt1.o): In function `fgets_unlocked':
/usr/include/bits/stdio2.h:125: multiple definition of `fgets_unlocked'
/tmp/ccntBfBN.o:/usr/include/bits/stdio2.h:125: first defined here
collect2: error: ld returned 1 exit status
make[1]: *** [etags] Error 1
make[1]: Leaving directory `/home/james/bin/emacs/rc/emacs-24.3/lib-src'
make: *** [lib-src] Error 2
有什么想法吗?
答案1
您需要运行autoreconf
来创建整个机器(从 VCS 签出不会包含任何生成的文件,分布式 tarball 包含它们是为了方便/残缺的环境)。