Разработка приложений в среде Linux - [17]

Шрифт
Интервал

расширяет язык С. Даже если вы намерены писать исходный код, придерживаясь ANSI-стандарта этого языка, некоторые расширения >gcc просто необходимо знать для понимания заголовочных файлов Linux.

Большинство опций командной строки такие же, как применяемые в компиляторах С. Для некоторых опций никаких стандартов не предусмотрено. В этой главе мы охватим наиболее важные опции, которые используются в повседневном программировании.

Стремление соблюсти ISO-стандарт С весьма полезно, но в связи с тем, что С является низкоуровневым языком, встречаются ситуации, когда стандартные средства недостаточно выразительны. Существуют две области, в которых широко применяются расширения >gcc: взаимодействие с ассемблерным кодом (эти вопросы раскрываются по адресу http://www.delorie.com/djgpp/doc/brennan/) и сборка совместно используемых библиотек (см. главу 8). Поскольку заголовочные файлы являются частью совместно используемых библиотек, некоторые расширения проявляются также в системных заголовочных файлах.

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

5.1. Опции >gcc

>gcc принимает множество командных опций. К счастью, набор опций, о которых действительно нужно иметь представление, не так велик, и в этой главе мы его рассмотрим.

Большинство опций совпадают или подобны опциям других компиляторов, >gcc включает в себя огромную документацию по своим опциям, доступную через info gcc (>man gcc также выдает эту информацию, однако man-страницы не обновляются настолько часто, как документация в формате Texinfo).

>-о имя_файлаУказывает имя выходного файла. Обычно в этом нет необходимости, если осуществляется компиляция в объектный файл, то есть по умолчанию происходит подстановка >имя_файла на >имя_файла. Однако если вы создаете исполняемый файл, по умолчанию (по историческим причинам) он создается под именем >а.out. Это также полезно в случае, когда требуется поместить выходной файл в другой каталог.
>-сКомпилирует без компоновки исходный файл, указанный для командной строки. В результате для каждого исходного файла создается объектный файл. При использовании >make компилятор >gcc обычно вызывается для каждого объектного файла; таким образом, в случае возникновения ошибки легче обнаружить, какой файл не смог скомпилироваться. Однако если вы вручную набираете команды, часто в одном вызове >gcc указывается множество файлов. В случае, если при задании множества файлов в командной строке может возникнуть неоднозначность, лучше указать только один файл. Например, вместо >gcc -с -о а.о а.с b.с имеет смысл применить >gcc -с -o a.o b.c.
>-DfooОпределяет препроцессорные макросы в командной строке. Возможно, потребуется отменить символы, трактуемые оболочкой как специальные. Например, при определении строки следует избегать употребления ограничивающих строки символов >". Вот два наиболее употребляемых способа: >'-Dfoo="bar"' и >-Dfoo=\"bar\". Первый способ работает намного лучше, если в строке присутствуют пробелы, поскольку оболочка рассматривает пробелы особым образом.
>-IкаталогДобавляет каталог в список каталогов, в которых производится поиск включаемых файлов.
>-LкаталогДобавляет каталог в список каталогов, в которых производится поиск библиотек, >gcc будет отдавать предпочтение совместно используемым библиотекам, а не статическим, если только не задано обратное.
>-lfooВыполняет компоновку с библиотекой >libfoo. Если не указано обратное, >gcc отдает предпочтение компоновке с совместно используемыми библиотеками (>libfoo.so), а не статическими (>libfoo.a). Компоновщик производит поиск функций во всех перечисленных библиотеках в том порядке, в котором они перечислены. Поиск завершается тогда, когда будут найдены все искомые функции.
>-staticВыполняет компоновку с только статическими библиотеками. См. главу 8.
>-g, >-ggdbВключает отладочную информацию. Опция >-g заставляет >gcc включить стандартную отладочную информацию. Опция >-ggdb указывает на необходимость включения огромного количества информации, которую в силах понять лишь отладчик >gdb.
Если дисковое пространство ограничено или вы хотите пожертвовать некоторой функциональностью ради скорости компоновки, следует использовать >-g. В этом случае, возможно, придется воспользоваться другим отладчиком, а не >gdb. Для максимально полной отладки необходимо указывать >-ggdb. В этом случае >gcc подготовит максимально подробную информацию для >gdb. Следует отметить, что в отличие от большинства компиляторов, >gcc помещает некоторую отладочную информацию в оптимизированный код. Однако трассировка в отладчике оптимизированного кода может быть сопряжена со сложностями, так как во время выполнения могут происходить прыжки и пропуски фрагментов кода, которые, как ожидалось, должны были выполняться. Тем не менее, при этом можно получить хорошее представление о том, как оптимизирующие компиляторы изменяют способ выполнения кода.
>-O, >-OnЗаставляет gcc оптимизировать код. По умолчанию,

Рекомендуем почитать
Яйцо кукушки или Преследуя шпиона в компьютерном лабиринте

В отличие от плохого танцора, хорошему сисадмину мешают только кукушкины яйца. Их откладывают в его компьютер злобные хакеры, чтобы из них вылупились программы, делающие своего папу-кукушку суперпользователем. Но сколько кабелю не виться — а кончику быть: бравый сисадмин не дремлет и за годик-другой выводит злоумышленников на чистую воду: на этот раз хакерская тусовка круто пролетела. Такого предельно краткое содержание классической книги эксперта по компьютерной безопасности Клиффа Столла «Яйцо кукушки».


Безопасность информационных систем

В пособии излагаются основные тенденции развития организационного обеспечения безопасности информационных систем, а также подходы к анализу информационной инфраструктуры организационных систем и решению задач обеспечения безопасности компьютерных систем.Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).


Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx»

Данное руководство по Ubuntu для новичков написано для тех, кто хочет легко и без проблем сменить свою операционную систему на Ubuntu. Оно охватывает вопросы, связанные с установкой, настройкой и использованием Ubuntu.


Сетевые средства Linux

В этой книге описаны принципы действия и область применения многих серверов, выполняющихся в системе Linux. Здесь рассматриваются DHCP-сервер, серверы Samba и NFS, серверы печати, NTP-сервер, средства удаленной регистрации и система X Window. He забыты и средства, традиционно используемые для обеспечения работы Internet-служб: серверы DNS, SMTP, HTTP и FTP. Большое внимание уделено вопросам безопасности сети. В данной книге нашли отражения также средства удаленного администрирования — инструменты Linuxconf, Webmin и SWAT.Данная книга несомненно окажется полезной как начинающим, так и опытным системным администраторам.Отзывы о книге Сетевые средства LinuxПоявилась прекрасная книга по Linux, осталось воспользоваться ею.


Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.


Iptables Tutorial 1.1.19

Iptables Tutorial 1.1.19Автор: (C) Oskar AndreassonCopyright (C) 2001-2002 by Oskar AndreassonПеревод: (C) Андрей КиселевПоследнюю версию документа можно получить по адресу: http://iptables-tutorial.frozentux.netfb2-документ отформатирован с использованием большого количества тегов и . Чтобы в «читалке» (в частности, Haali Reader) текст выглядел «красиво», настройте свойства соотвествующих стилей (emphasis и strong), изменив, например, их цвета или начертания. (прим. автора fb2-документа)