Can GCC not complain about undefined references?

Yes, it is possible to avoid reporting undefined references – using --unresolved-symbols linker option.

g++ mm.cpp -Wl,--unresolved-symbols=ignore-in-object-files

From man ld

–unresolved-symbols=method

Determine how to handle unresolved symbols. There are four
possible values for method:

       ignore-all
           Do not report any unresolved symbols.

       report-all
           Report all unresolved symbols.  This is the default.

       ignore-in-object-files
           Report unresolved symbols that are contained in shared
           libraries, but ignore them if they come from regular object
           files.

       ignore-in-shared-libs
           Report unresolved symbols that come from regular object
           files, but ignore them if they come from shared libraries.  This
           can be useful when creating a dynamic binary and it is known
           that all the shared libraries that it should be referencing
           are included on the linker's command line.

The behaviour for shared libraries on their own can also be
controlled by the –[no-]allow-shlib-undefined option.

Normally the linker will generate an error message for each
reported unresolved symbol but the option –warn-unresolved-symbols can
change this to a warning.

Leave a Comment