Что такое Обьектный файл ?
Обьектный файл содержет машиные инструкции а данные с которых линкеровщик создает исполняемую програму. Каждий обьектный файл содержит НАЗВАНИЕ (symbol name) и ссылку на это название. Названия делятся на 3 категории: 1) Локальные обьявления (local definition) – это коды или данные которые могут использоваться только в том обьектном файле где они обьявленые. 2) Глобальные обьявления (global definition) – это обьявления прорцедур,функций,данных котоые могут быть доступны из других обьектных файлов 3) Внешние ссылки (extern references) – это обьявления которые глобальный инаходяться в других обьектных файлах.
Для просмотра обявлений успользуеться програма nm.
Этап линкирования.
Линкирование это последний этап создания запускания файлов, он в включает в a.out файл все ссылки обьявлений и их реализации , которые встречаються в програме. Если например есть сылка а нет реализаци то линкировщик скажет что не находит внешнего обявления и выдаст следюющее: $ cc main.c /bin/ld: Unsatisfied symbol: my_func (code)
Работа с библиотеками Очень полезным средсвом для хранения сылски реализаций внешних обьявлений есть библиотеки. Стандартная библиотека libc которая содержит «основные» функции для C,Fortran
Библиотеки называються libname.sfx Name – название библиотеки, которая идентефецирует библиотеку Sfx - если .а – архив, .sl – общедоступная библиотека.
Для того что б указать компилятору библиотеку то указываеться через опцию –l. Например --lm (подключает стандартну математическую библиотеку libm.a). По умолчанию подключаються библиотеки libcl,libisamstub,libc. По умолчанию библиотеки ищатся по путям /lib,/usr/lib,lib/libp. Можно задать пути где искать: 1) Переменой коружения LPATH 2) Опция линкера -L
Также для каждой програмы входит обьектный файл /lib/crt0.o В этом файле содержаться таочки входа в програму,простомтр аргументов и прочее.
Можна прочитать о фунциях которые есть в стандартных библиотеках исполюзую man-page Вызовы (функции) описываються следующим образом Name(nL) Name – название N – 2-системные вызовы, 3-другие библиотеки L – буква которая означает к которой библиотеке вызов относиться
Вот примеры:
Опции компилятора cc
cс [option] files · -Amode · mode=c По умолчанию, стандартный компилятор С (по Керниган, Риттчи) · mode=a ANSI C (ISO 9899:1990) · mode=e Расшириное ANSI C
· -c Отменить фазу редактирования связей и создавать об'ектный файл даже в случае программы, состоящей только из одного модуля. · -p Сгенерировать дополнительные команды для подсчета числа обращений к каждой функции. Кроме того, если имеет место фаза редактирования связей, стандартная подпрограмма инициализации заменяется на такую, которая автоматически вызывает функцию monitor(3C) и обеспечивает запись файла mount.out при нормальном завершении об'ектной программы. Профиль выполнения программы может быть затем получен при помощи команды prof(1).
· -Dname=def определяет макрос для препроцесорра (эквивалентно #define ) · -E посылает на стандартный поток вывода (по умолчанию на stderr) · -g содержит дополнительную информацию для отладки · -Idir Изменить алгоритм поиска включаемых (посредством директивы #include) файлов, имена которых не начинаются с символа /, а именно: сначала искать в указанном каталоге, а затем уже в каталогах стандартного списка. Так, включаемые файлы, чьи имена заданы в двойных кавычках, сначала ищутся в каталоге, содержащем файл, затем в каталогах, указанных с помощью опции -I, а затем уже в каталогах стандартного списка. Включаемые файлы, чьи имена заданы в угловых скобках, не ищутся в каталоге, содержащем файл. · -lname включает библиотеку · -L dir dir= Дополнить каталогом список каталогов, которые содержат об ектные библиотечные модули [для редактирования связей посредством ld · -v расширынай информация о процессе компиляции · -w не показывает предупреждений · -Wx,arglist передает аргументы (опции) arglist для процеса. x может принимать значения:
· d Driver · p Preprocessor · c Compiler · a Assembler · l Linker · +z,+Z Опция создает PIC код · -O Включить оптимизацию обьектного кода
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ![]() ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (291)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |