https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89896
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW Assignee|rguenth at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> --- $ gcc -shared -fPIC -flto=4 -o x.so isl.o -v ... make -f /tmp/ccj2DsQs.mk -j4 all ^^^ ... /usr/local/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/../lib64/crt1.o: in function `_start': (.text+0x24): undefined reference to `main' collect2: error: ld returned 1 exit status make: *** [<builtin>: all] Error 1 lto-wrapper: fatal error: make returned 2 exit status Since all.c matches the target "all", make tries to create "all".