Как GCC связывает объекты? - PullRequest
1 голос
/ 11 января 2012

Я могу связать мой example.o с помощью этой команды без проблем

gcc example.o -o example.exe

, но если я вручную связываю его, используя ld, я получаю много ошибок:

ld example.o -o example.exe
example.o:example.c:(.text+0x1d7e5): undefined reference to `strcmp'
example.o:example.c:(.text+0x1d9b6): undefined reference to `_ftime'
example.o:example.c:(.text+0x1dcbd): undefined reference to `strchr'
example.o:example.c:(.text+0x1df7f): undefined reference to `strtoul'
...

Как gcc вызывает компоновщик и связывает объектный файл с исполняемым файлом?

1 Ответ

0 голосов
/ 11 января 2012

Ответ сложнее, чем вы себе представляете.

Пробег

gcc -v example.o -o example.exe

чтобы понять, что происходит

Подробная информация зависит от операционной системы. В Linux он автоматически загружает crt*.o объекты (содержащие код сборки _start, вызывающий ваш main и т. Д. И т. Д.) И библиотеку C. Я понятия не имею, что делает ваша платформа; Я никогда не компилировал на Windows.

...