Multiple definitions when linking. collect2: error ld returned 1 exit status
compilation, compiler-errors, emacs, makefile
Solution
I had a similar problem on an older Linux version (RHEL 4.9).
Following Eric Johnson's link, configuring like so worked for me:
./configure CPPFLAGS="-fgnu89-inline"
Problem
I am having problems compiling Emacs 23.3 Release Candidate 2: I run `autogen.sh`, `./configure`, `make` and finally `make install` where I get this error: ``` 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/john/bin/emacs/rc/emacs-24.3/lib-src' make: *** [lib-src] Error 2 ``` I have never seen an error like this before. What does this mean?