@gibsonman01

Ошибка «undefined reference» при линковке в MinGW?

Из файла с исходным кодом на языке C с помощью MinGW сделал объектный файл.
При попытке линковки:
ld -o test.exe test.o
выдаёт ошибку "undefined reference". Например, к printf.
  • Вопрос задан
  • 3146 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега MinGW
Седой и строгий
Код функции 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы