GCC - The Complete Reference (537669), страница 4
Текст из файла (страница 4)
Словарь терминов содержит словарь терминов и определений этой книги. ава Ввецеиие в ВСЕ боря ый Комлилятор О%У ("ЫЧ 13 согпрйег сойесг(ол", сокращенно — "6СС') является важнейшей частью всего мирового программного обеспечения с открытым исходным кодом (орел воцгсе зойчгаге). Все остальные программы с открытым исходным кодом, на том или ином уровне основываются на нем. Даже другие языки программирования, такие как Рег1 и РЛЛол, написаны на языке С, и компилируются в ОСС.
Компилятор ЙСС имеет весьма занимательную историю. Она — нечто большее, чем простое перечисление дат и событий, Эта часть программного обеспечения имеет наиболее фундаментальное значение для всего движения создания свободно распространяемых программ (атее войтгаге). Создание системы Ь(лцх стало возможным единственно благодаря использованию при ее разработке компилятора ССС. В этой вводной части предлагается обзор возможностей, которые включает в себя сборный компилятор ОЛПЕ, здесь дается представление о составляющих частях его окружения.
Кроме средств для собственно компилляции имеются также средства трассировки исходного кода и Лрограммы для редактирования файлов, нрограммы управления процессом комлиляции и средства предоставления отладочной информации. Вводная часть завершается списком составляющих частей ОСС и описанием его процессов. Список содержит описания файлов и программ, которые входят в состав Сборного Компилятора О1~Ш. За этим списком следует пошаговое описание процессов преобразования исходных файлов в скомпонованную и готовую к запуску нрограмму.
бйО ОСС является продуктом проекта ба. Этот проект был начат в 1984 году с целью создания свободно распространяемой операционной системы, подобной ИЧ1Х, Глава 1. Введение в 6СС 2 1 ("СХ13 — Хог ()п1х".) Как н любой проект такого масштаба, он претерпел некоторые изгибы и прошел через кое-какие повороты,но цель все же была достигнута. Сейчас имеется действительно полнофункциональная ()Х!Х-подобная операционная система„известная всему миру под названием Ыпцх, успешно применяемая некоммерческими организациями, правительствами и частными лицами. И эта система вместе со всеми своими утилитами и приложениями основана на Сборном Компиляторе СХ().
Количество свободно распространяемых программ для Е)пцх и других систем огромно и оно растет с каждым днем. Программное обеспечение, разработанное как часть общего проекта С1Ч(3 в целях создания свободно распространяемой версии операционной системы ()) 11Х, перечислено в "Каталоге свободно распространяемых программ" (Егее Бойнаге Вйгесгогу) по адресу Игр;//нччзияпц.огя/г()гес1огу. Тысячи программистов участвовали в различных работах проекта Сй)(), так же как и в других проектах свободно распространяемого программного обеспечения, и практически все они на каком-либо уровне своей работы основывались на ССС.
Сравнение компиляторов Компиляторы можно сравнивать по скорости компиляции, по скорости работы и по величине генерируемого кода. Вряд-ли можно придумать еще какие-нибудь способы их померять. Конечно, придумать можно много разных характеристик, но придать им хоть какой-нибудь смысл — задача не всегда простая. Например, количество обрабатываемых исходных файлов различного типа (сборочных, конфигурационных файлов, включаемых заголовочных файлов, выполнимого кода, и т.п.) может превышать 15000. Преобразование исходных файлов в объектные файлы, библиотеки и выполнимые программы увеличивает это количество еше на несколько тысяч.
Подсчет строк в исходном коде — т.е. количество строк текста в 15000 и более файлах— дает число, превышающее 3700000. Какие бы критерии мы не применили, следует признать, что речь идет о действительно больших программах. Из-за привлечения в разработку такого большего количества программистов, качество кода лежит н широких пределах. Количество и качество внутренней документации также подвержено изменениям, ведь она н основном составлена из комментариев, включаемых в исходный код.
К счастью, большинство программистов, работавших над кодом, постепенно улучшили и сам код н комментарии к нему. Вам не придется читать встроенные комментарии для того, чтобы использовать компилятор. Однако, если вы решите поработать нвл усовершенствованием самого компилятора, то, конечно, придется потратить какое-то время и на чтение нключенных в исходный код комментариев. Единственный путь по-настоящему оценить качество компилятора — узнать мнение о нем специалистов, которые его используют.
Невозможно определить количество таких людей но всем мире (таково уж свойство свободно распространяемых программ), но это количество должно быть огромным. Этот компилятор применяется как основной на некоторых версиях ()МХ, имеющих и свои довольно неплохие средства, поддерживаемые поставщиками. Мне известно, что даже один из крупных поставщиков ()Н)Х, имеющий свой прекрасный компилятор, применяет ССС для многих своих "домашних" проектов. 22 часть !.
свободно распространяемый компилятор Разработка компилятора не прекращается. Как описано во второй главе, вы можете устанавливать выпущенные версии ОСС, "выкачивая" себе исходный код интересующего вас выпуска, или загружать последнюю (зкспери ментальную) версию. Экспериментальная версия обновляется раз в несколько минут — она изменяется непрерывно. Некоторые исправления поправляют обнаруженные ошибки, другие— добавляют новые языки и возможности, и некоторые — убирают более не применяемые средства.
Если вам приходилось раньше работать с ОСС, и через некоторое время возвращаетесь к нему снова, то вы непременно заметите некоторъ1е изменения. Опции командной строки Каждая опция командной строки начинается со знака дефиса ("-",)зур)зеп) либо пары дефисов. К примеру, следующая команда компилирует программу на языке С гвцххс. с, написанную в соответствии со стандартом А)ЧБ! и создает не скомпонованный объектный файл с именем гвцххс. о: дсс -вова -с михЫе.с -о шиххе.о Опция, состоящия из одной буквы, за которой следует соответствующее опции имя, не обязательно должна включать пробел между буквой опции и параметром.
Например, опция -огвиххс. о тождественна -о гвихзе.о. Следующая команда использует -зг для вывода подробных описаний и --)те1р для распечатывания списка доступных опций компилятора, по ней будет выведен исчерпывающий список опций командной строки, включающий и особые опции для каждого языка: 3 дес -ч --ивар Возможно построение команды с таким набором опций, который не вызывает никаких действий.
Например, следующая команда загружает в компилятор объектный файл и затем определяет -с, чтобы предотвратить задействование компоновщика; 3 дсс -с Ьгоохш.о Все опции командной строки приблизительно укладываются в три категории: ° Специфичные к языку. Компилятор ОСС способен компилировать несколько языков, и некоторые опции применяются толъко к одному или двум из них. ° Специфичнь1е к платформе. Компилятор ОСС способен генерировать объектный код для нескольких платформ, некоторые опции применяются лишь тогда, когда создается код для особой платформы.
К примеру если целевой платформой является )пге! 336, то может быть использован набор опций -йр -хее -зп -387 чтобы определить, что числа с плавающей точкой, возвращаемые вызываемыми функциями, должны сохраняться в аппаратных регистрах с плавающей точкой.
° Общие. Немало опций имеют общее значение для всех языков и всех платформ. Например, опция -о указывает компилятору оптимизировать выводимый объектный код. Гпзвз 1. Введение в ОСС 23 Назначение опции, неизвестной компилятору, всегда будет приводить к сообщению об ошибке. Назначение опции, не соответствующей целевой платформе„также будет приводить к сообщению об ошибке.
Сама программа-драйвер пес обрабатывает все известные ей опции и передает оставшиеся опции процессу, который компилирует особьгй ЯЗЫК. Если опция, переданная компилятору специфического языка, не известна ему, то будет выдано сообщение об ошибке. Опции, указывающие дсс на выполнение только определенных действий, как то компоновка (йп)с!пВ) или предобработка (ргергосеаа!пй), также означают, что остальные флаги, обычно имеющие значение, будут проигнорированы.