https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96385
--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> --- [hjl@gnu-cfl-2 pr26324]$ cat pr15146a.c extern int xxx; int bar (void) { return xxx; } int main () { return 0; } [hjl@gnu-cfl-2 pr26324]$ cat pr15146b.c int xxx = 3; [hjl@gnu-cfl-2 pr26324]$ cat pr15146c.c [hjl@gnu-cfl-2 pr26324]$ make gcc -B./ -O2 -g -o x -Wl,-R,. \ -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed pr15146a.o pr15146c.so ./ld: /tmp/ccHirkTe.debug.temp.o: undefined reference to symbol 'xxx' ./ld: ./pr15146b.so: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [Makefile:15: x] Error 1 [hjl@gnu-cfl-2 pr26324]$