Суббота, 19 Июня 2010 года, 5:55
Просмотров: 3708 шт.

Hi-Tech → GNU Compiler Collection


GNU Compiler Collection

Проба пера..

Hello world
*****


Все, как обычно. Заводимс спец. папку, в ней создаем файл: hello.c
Пишем простейший код:
#include <stdio.h>

int main(void)
{
printf("Hello world!
");
return(0);
}


Сохраняем и выполняем команду: gcc hello.c
В каталоге появился новый файл - a.out, это название присваивается по умолчанию, если специально не задано другого.

Это и есть исполняемый файл. Запусткаем его (в консоли набираем):
./a.out и радуемся в связи с первой написанной программой в линуксе :)

При запуске исполняемого файла, если мы наберём только название, ось будет искать его в каталогах /usr/bin и /usr/local/bin, и, естественно, не найдёт. Первый из них предназначен для размещения стабильных версий программ, как правило,входящих в дистрибутив Linux. Второй – для программ, устанавливаемых самим пользователем (за стабильность которых никто не ручается). По умолчанию при сборке программы устанавливаются в каталог /usr/local/bin.

флаг -o используем чтобы указать определенное имя получаемому исполняемому файлу: gcc hello.c -o say_hello

флаг -E используем чтобы посмотреть, что получается после работы препроцессора. Этот флаг останавливает выполнение программы как раз на этапе обработки препроцессором. В результате получается файл исходного кода с включённым в него содержимым заголовочных файлов.
выподняем/смотрим: gcc -E hello.c -o hello.cpp

флаг -с используем для создания объектных файлов (виндовый obj): gcc -c kalkul.c

Название получаемого файла такое же, но компилятор изменяет расширение .c на .o (но указать можно и вручную).

флаг -x используем, если создаётся объектный файл из исходника, уже обработанного препроцессором (например, такого, какой мы получили выше), мы должны обязательно указать явно, что компилируемый файл является файлом исходного кода, обработанный препроцессором, и имеющий теги препроцессора. В противном случае он будет обрабатываться, как обычный файл C++, без учёта тегов препроцессора, а значит связь с объявленными функциями не будет устанавливаться.
Файл C++, обработанный препроцессором обозначается cpp-output:
gcc -x cpp-output -c hello.cpp


Ну и собираем "проект": gcc hello.o -o say_hello
Запускаем: ./say_hello



P.S. Зачем вся эта возня с промежуточными этапами?
Программы редко состоят из одного файла. Как правило исходных файлов несколько, и они объединены в проект. И в некоторых исключительных случаях программу приходится компоновать из нескольких частей, написанных, возможно, на разных языка. В этом случае приходится запускать компиляторы разных языков, чтобы каждый получил объектный файл из своего исходника, а затем уже эти полученные объектные файлы компоновать в исполняемую программу.

Это ж блин не в студии тыцнуть одну кнопку и весть проект собрался о_О.

Эта запись отмечена тегами: cc++gcclinux

nomeNNescio
Блог им. nomeNNescio
Рейтинг записи
  0  

←Туда  Сюда→
Авторизуйтесь или зарегистрируйтесь, чтобы иметь возможность комментировать записи!


Категории

Товары и Услуги  Авто  Отдых  Здоровье  Hi-Tech  Стройка  Fashion  Разное  Домашний очаг  Бизнес  Общество  Кухня  Образование  Флора и фауна  Музыка и кино  Спорт  Туризм  Хобби  География  Позитив  Наука и Техника  Карьера  Теория жизни  История  Знаменитости  Творчество  Отношения  Фольклор  Религия  Право  Астрономия  Мистика 


Облако тегов



TOP Блоггеры

profitinvestingprofitinvesting
Записей: 3730

webweb
Записей: 741

sorokasoroka
Записей: 611

begtopmerbegtopmer
Записей: 535

ShaDeRzzShaDeRzz
Записей: 242

little_fairylittle_fairy
Записей: 164

nomeNNescionomeNNescio
Записей: 153

savchenkosavchenko
Записей: 98

BeautyPROFBeautyPROF
Записей: 94

Jetos2Jetos2
Записей: 78

DiezelSun2DiezelSun2
Записей: 73

KisaMurMurKisaMurMur
Записей: 53

Весь список

Последние комменты

  • comp-service написал(а):
    Комп-Сервис, Ремонт компьютеров и ноутбуков в Киеве https://comp-service.kiev.ua
  • Koval написал(а):
    [url=https://avafka.ru/]анкор[/url]
  • Koval написал(а):
    Привет! Я тоже недавно искал информацию о лицензионных казино в Украине и нашел отличный сайт, котор...
  • Serrt написал(а):
    Тут все есть: https://ya.ru/ Добавлено позже: Тут все есть: [url=https://ya.ru/]https://ya.ru/[/url]
  • Serrt написал(а):
    Спасибо!

Сделай правильный выбор!