Код функции
printf
находится в библиотеке
libmsvcrt.a
. Чтобы иметь возможность использовать
printf
, нужно слинковать
test.o
с
libmsvcrt.a
. Впрочем, этим дело не ограничивается, чтобы хотя бы запустить программу, необходимо очень много вспомогательного кода. Параметры линковщика могут выглядеть примерно так для обычного "hello world":
ld -LC:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0
-LC:/MinGW/x64/mingw64/bin/../lib/gcc
-LC:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/lib/../lib
-LC:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../lib
-LC:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/lib
-LC:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../..
C:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o
C:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/crtbegin.o
test.o
-lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32
-luser32 -lkernel32 -liconv -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt
C:/MinGW/x64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/crtend.o