| Компоновка |
|
В предыдущей статье говорилось о том, что компилятор переводит исходный код программы в исполняемый. Но это не всегда так. В достаточно объемных программах исходный код обычно разделяется для удобства на несколько частей, которые компилируются отдельно, а затем соединяются воедино. Каждый такой "кусок" содержит объектный код и называется объектным модулем. Объектные модули записываются в объектные файлы, имеющие расширение .о. В результате объединения объектных файлов могут получаться исполняемые файлы (обычные запускаемые бинарники), а также библиотеки. Для объединения объектных файлов служит компоновщик (линковщик), а сам процесс называют компоновкой или линковкой. В Linux имеется компоновщик GNU Id, входящий в состав пакета GNU binutils. Иногда компоновщик называют также загрузчиком. Ручная компоновка объектных файлов— довольно неприятный процесс, требующий передачи программе Id большого числа параметров, зависящих от многих факторов. К счастью, компиляторы из коллекции GCC сами вызывают линковщик с нужными параметрами, когда это необходимо. Программист может самостоятельно передавать компоновщику дополнительные параметры через компилятор. Теперь вернемся к нашему примеру . В предыдущем разделе компилятор "молча" вызвал компоновщик, в результате чего получился исполняемый файл. Чтобы отказаться от автоматической компоновки, нужно передать компилятору опцию -с: $ gcc -с myclock.c Если компилятор не нашел ошибок, то в текущем каталоге должен появиться объектный файл myclock.o. Других объектных файлов у нас нет, поэтому будем компоновать только его. Это делается очень просто: $ gcc -о myclock myclock.o
В Unix существуют различные форматы объектных файлов. Наиболее популярные среди них— a.out (Assembler OUTput) и COFF (Common Object File Format). В Linux чаще всего встречается открытый формат объектных и исполняемых файлов ELF (Executable and Linkable Format).
Related Articles
Set as favorite
Bookmark
Email This
Hits: 307 Комментарии (0)RSS feed CommentsНаписать комментарий |