Что означает связывание в контексте компиляторов? - PullRequest
2 голосов
/ 27 ноября 2011

Я узнаю больше о компиляторах. Пытаясь понять эту статью в Википедии о LLVM , я наткнулся на термин «связывание». Я видел этот термин раньше, но на самом деле не понимаю его. В контексте компиляторов, что означает связывание?

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Связывание - это процесс соединения всех скомпилированных объектов друг с другом для формирования окончательного исполняемого файла.Когда вы вызываете функцию в одном куске кода, компоновщик должен подключить код, который вызывает функцию, к коду, реализующему функцию.

1 голос
/ 27 ноября 2011

Источник: здесь

"Связывание относится к созданию одного исполняемого файла из нескольких объектных файлов. На этом этапе, как правило, компоновщик будет жаловаться на неопределенные функции (обычно саму main). Во время компиляции, если компилятор не может найти определение для конкретной функции, это просто предполагает, что функция была определена в другом файле. Если это не так, компилятор не узнает об этом - он не смотрит на содержимое более одного файла за раз. Компоновщик, с другой стороны, может просматривать несколько файлов и пытаться найти ссылки на функции, которые не были упомянуты. "

Другими словами: связывание объединяет все ваши скомпилированные библиотеки / двоичные файлы, которые зависят друг от друга, так что выполнение вашей программы будет возможным.

...