Библиотека и компоновка

Содержание

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

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

При вызове библиотечной функции компилятор «запоминает» ее имя. Потом компоновщик связывает код исходной программы с объектным кодом, уже найденным в стандартной библиотеке. Этот процесс называется компоновкой[1]. У некоторых компиляторов есть свой собственный компоновщик, другие пользуются стандартным компоновщиком, поставляемым вместе с операционной системой.

В библиотеке функции хранятся в переместимом формате. Это значит, что адреса машинных инструкций в памяти являются не абсолютными, а относительными. Прикомпоновке программы с функциями из стандартной библиотеки эти относительные адреса, или смещения, используются для определения действительных адресов. Для того чтобы научиться программировать на С (а значит и понять дальнейший материал данной книги), этого объяснения достаточно, более подробно процесс настройки адресов изложен в других книгах.

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

[1]Или редактированием связей.