|
|||||||
|
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Компилятор С: gcc
Между операционной системой UNIX и языком программирования С существует тесная взаимосвязь. Общеизвестно, что язык С с самого начала предназначался для использования в качестве инструмента разработки операционной системы UNIX. И действительно, при создании программного кода операционной системы UNIX в основном применялся язык С. То же самое можно сказать относительно Linux. Большинство вариантов Linux включают GNU-версию компилятора С, gcc. Язык программирования С достаточно сложен, включает множество различных средств. В этом разделе кратко описаны основные компоненты языка программирования С и способы их использования при создании некоторых полезных программ. На примере последних будут рассмотрены различные методы компиляции программ, написанных на языке С. Для вызова компилятора GNU С в системе Linux необходимо воспользоваться командой gcc. Команда gcc, в свою очередь, вызывает четыре других компонента. Первый из них именуется препроцессором. В программах на языке С содержатся специальные команды препроцессора, изменяющие программный код перед его отсылкой компилятору. В качестве второго компонента выступает сам компилятор. Он обрабатывает программный код и создает версию кода сборки для программы. Третий компонент — ассемблер. На основании версии кода сборки ассемблер генерирует версию объектного кода. В качестве четвертого компонента выступает редактор связей, который использует объектный код для создания исполняемой программы. Полученный в результате функционирования компилятора файл по умолчанию именуется a.out. Однако этому файлу можно присвоить и другое имя. В этом случае потребуется воспользоваться опцией -о, в качестве параметра которой следует указать название файла. В результате вместо стандартного имени a.out будет использовано новое имя. Перечень параметров команды gcc приведен в табл. 1. В следующем примере программа gccиспользуется для компиляции программы greet.c. Программист назвал исполняемый файл «greet». Запуск исполняемого файла осуществляется с помощью командной строки Linux точно так же, как и запуск любой другой команды. $ gcc greet, с -о greet $ greet Hello, how are you При работе с программами, состоящими из нескольких отдельных файлов, необходимо учитывать разницу между компилятором С и редактором связей. Компилятор С предназначен для создания объектного кода, а назначением редактора связей является создание исполняемой программы, использующей файлы с объектными кодами. Компилятор С компилирует отдельно каждый файл, содержащий исходный код, и для каждого из них создает отдельный файл с объектным кодом. Созданные файлы, включающие объектный код, имеют расширение.о, а не.с. С помощью одной команды gcc можно скомпилировать и скомпоновать программу, состоящую из нескольких файлов. Для этого нужно просто перечислить названия всех файлов, содержащих исходный код, сославшись на них как на параметры командной строки. В следующем примере программист компилирует программу bookrecs путем вызова команды gcc с указанием файлов, содержащих исходный код. С помощью опции -о указывается, что исполняемая программа именуется bookrecs. $ gcc main.с io.c -о bookrecs Утилиту gcc можно использовать только для компоновки, если в командной строке будут перечислены лишь файлы объектного кода. Файлы объектного кода имеют расширение.о. В следующем примере программист выполняет компоновку программы. В данном случае компиляция не выполняется. Конечно, в этом случае подразумевается, что файлы объектного кода были созданы заранее. Таблица.1. Утилита gcc: компилятор языка С
пилятора, ассемблера и редактора связей. Препроцессор обрабатывает макрокоманды, находящиеся в файле исходного кода. Подобные команды выполняют простую подстановку текста. Компилятор компилирует файл исходного кода, создавая код сборки. Ассемблер компилирует файлы кода сборки, создавая файлы объектного кода. Редактор связей выполняет компоновку файлов объектного кода, создавая исполняемый файл. В качестве возможных параметров утилиты gcc применяются исходный код, объектный код, а также файлы кода сборки. Наравне с этим используется множество опций. Утилита gcc распознает файлы по их расширениям: .с — файлы исходного кода С.о — файлы объектного кода.s — файлы кода на языке ассемблера.С — файлы C++ .срр — файлы C++
семблера для скомпилированных файлов имеют расширение.s. В примере генерируется файл greets -Р Выводит результаты работы препроцессора -с Создает исключительно файл объектного кода. Версии скомпилированных фай- лов объектного кода имеют расширение.о -g Осуществляет подготовку скомпилированной программы для использования со- вместно с символическим отладчиком -о имяфайла Задает имя исполняемого файла, имя_файла. По умолчанию используется a.out -1 имя_файла Обеспечивает применение для компоновки программы системной библиотеки с указанным именем файла. Имя файла содержит префикс lib и расширение.а. В командной строке gcc эта опция не указывается. Опции -1 должны всегда располагаться после исходного кода и имен файлов объектного кода в командной строке - IdirЗадает каталоги, в которых производится поиск файлов для включения, таких как файлы заголовков (.h) - LdirЗадает каталоги, в которых производится поиск библиотек
$ gcc main.с io.o -о bookrecs Поиск по сайту: |
||||||
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.237 сек.) |