Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книги автора: Разработка приложений в среде Linux. Второе изданиеLinux Application Development. Second Edition
/ Книга: Разработка приложений в среде Linux. Второе издание
5.1. Опции gcc
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 оптимизировать код. По умолчанию, gcc выполняет небольшой объем оптимизации; при указании числа (n ) осуществляется оптимизация на определенном уровне. Наиболее распространенный уровень оптимизации — 2; в настоящее время в стандартной версии gcc самым высоким уровнем оптимизации является 3. Мы рекомендуем использовать -O2 или -O3;-O3 может увеличить размер приложения, так что если это имеет значение, попробуйте оба варианта. Если для вашего приложения важна память и дисковое пространство, можно также использовать опцию -Os , которая делает размер кода минимальным за счет увеличения времени выполнения. gcc включает встроенные функции только тогда, когда применяется хотя бы минимальная оптимизация (-O ). |
-ansi |
Поддержка в программах на языке С всех стандартов ANSI (X3.159-1989) или их эквивалента ISO (ISO/IEC 9899:1990) (обычное называемого С89 или реже С90). Следует отметить, что это не обеспечивает полное соответствие стандарту ANSI/ISO. |
Опция -ansi отключает расширения gcc , которые обычно конфликтуют со стандартами ANSI/ISO. (Вследствие того, что эти расширения поддерживаются многими другими компиляторами С, на практике это не является проблемой.) Это также определяет макрос __STRICT_ANSI__ (как описано далее в этой книге), который заголовочные файлы используют для поддержки среды, соответствующей ANSI/ISO. |
|
-pedantic |
Выводит все предупреждения и сообщения об ошибках, требуемые для ANSI/ISO-стандарта языка С. Это не обеспечивает полное соответствие стандарту ANSI/ISO. |
-Wall |
Включает генерацию всех предупреждений gcc , что обычно является полезным. Но таким образом не включаются опции, которые могут пригодиться в специфических случаях. Аналогичный уровень детализации будет установлен и для программы синтаксического контроля lint в отношении вашего исходного кода, gcc позволяет вручную включать и отключать каждое предупреждение компилятора. В руководстве по gcc подробно описаны все предупреждения. |
Оглавление статьи/книги
Похожие страницы
- Опции и параметры make
- Опции gcc
- Глава 5 Опции и расширения gcc
- 15.4.2.1. Добавляйте отладочные опции и переменные
- Глава 2 Аргументы, опции и переменные окружения
- 2.1.2. Длинные опции GNU
- 2.3.1. Опции с одним символом
- 2.3.3. Длинные опции
- 2.3.3.2. Длинные опции в стиле POSIX
- 7.1. Опции V7 ls
- Опции для работы с пакетами и гнездами
- Опции сетевой фильтрации