Подтвердить что ты не робот

В чем разница между компилятором и компоновщиком?

В чем разница между компилятором и компоновщиком в C?

4b9b3361

Ответ 1

Компилятор преобразует код, написанный на человеко-читаемом языке программирования, в представление машинного кода, которое понимается вашим процессором. Этот шаг создает объектные файлы.

Как только этот шаг выполняется компилятором, необходим еще один шаг для создания исполняемого исполняемого файла, который можно вызвать и запустить, то есть связать вызовы функций (например), которые должен сгенерировать ваш скомпилированный код, чтобы работать, Например, ваш код может вызвать sprintf, который является подпрограммой в стандартной библиотеке C. В вашем коде ничего нет фактического сервиса, предоставляемого sprintf, он просто сообщает, что он должен быть вызван, но фактический код находится где-то в общей библиотеке C. Чтобы выполнить эту (и многие другие) связи, необходимо вызывать компоновщик. После связывания вы получаете фактический исполняемый файл, который может запускаться.

Ответ 2

Компилятор генерирует файлы объектных кодов (машинный язык) из исходного кода.

A linker объединяет эти файлы объектных кодов в исполняемый файл.

Многие IDE ссылаются на них последовательно, поэтому вы никогда не видите, как работает компоновщик. Некоторые языки/компиляторы не имеют отдельного компоновщика, и компоновка выполняется компилятором как часть его работы.