Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/1022: Рейтинг темы: голосов - 1022, средняя оценка - 4.79
Автор FAQ
 Аватар для RNT
3149 / 369 / 3
Регистрация: 08.08.2009
Сообщений: 1,126

GCC - компиляция C/C++ программ

07.11.2009, 11:41. Показов 202940. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обсуждение приветствуется , буду рад пожеланиям по улучшению данной статьи.
Статья в процессе написания, пожелания пишите сюда

ОГЛАВЛЕНИЕ

1. Предисловие
2. Руководство
2.1. Установка MinGW на Windows.
2.2. Прописывание пути к MinGW в Windows.
2.3. Компиляция в Windows`е
2.4. Литература по GCC
2.5. Уменьшение размера исполняемого файла.
1. Предисловие

В данной статье будет написано как пользоваться компилятором GCC и вспомогательными программами. Эта статья будет полезна для тех, кто только начал изучать С/С++, и не знает на чем и как компилировать свои первые программы, а также всем желающим научиться пользоваться этим компилятором.

2. Руководство

2.1. Установка MinGW на Windows.

Зайдите на страничку http://sourceforge.net/projects/mingw/files/ найдите там папку Automated MinGW Installer, найдите в ней инсталлятор посвежее, скачайте его. Затем запустите его. Щелкните Next => Download and install => Next => I Agree => Current => Next => Выберите MinGW base tools, g++, MinGW Make => Next => Выберите папку куда хотите установить MinGW => Next => Install. Ждите пока скачается и установится MinGW.


2.2. Прописывание пути к MinGW в Windows.

Прописывание путей необходимо для того, чтобы для запуска компилятора не приходилось каждый раз писать полный путь к нему. Зайдите в Панель инструментов => Система => Дополнительно => Переменные среды. К переменной Path, через знак "точка с запятой" добавьте путь к папке /MinGW/bin.

2.3. Компиляция в Windows`е

1) Откройте консоль Пуск=> Выполнить=> cmd.
2) Перейдите в папку с исходником командой cd путь_к_папке_с_исходником например:
Bash
1
cd C:\MyProgs
3) Если исходники вашей программы состоят из одного файла, то команда компиляции будет выглядеть так:
g++ исходный_файл
Например:
Bash
1
g++ main.cpp
В результате выполнения этой команды в папке с исходником окажется откомпилированная программа.
4) Если исходники вашей программы состоят из нескольких файлов, то можно написать их имена через пробел:
g++ первый_исходный_файл второй_исходный_файл
Например:
Bash
1
g++ main.cpp func.cpp
5) Если проект состоит из большого числа исходных файлов, то скомпилировать их всех можно командой:
Bash
1
g++ *.cpp
В данной папке все исходные файлы будут скомпилированы в одну программу.
6) Если вы не хотите каждый раз возится с консолью, можете создать *.bat файл и записать в него все необходимые команды. Делается это так: создаете текстовой документ, открываете его с блокнотом и записываете в него необходимые команды, примерно так:
Bash
1
2
g++ *.cpp
PAUSE
Команда PAUSE нужна для того, чтобы после компиляции консоль не закрывалась, чтобы можно было посмотреть результаты компиляции т.к. могут быть сообщения компилятора о синтаксических ошибках в исходнике. После того, как вы запишете необходимые команды в текстовой файл, надо сохранить файл и переименовать его в файл с расширением *.bat. Например make.bat. Этот файл make.bat нужно класть в папку с исходником, и для компиляции необходимо только запустить этот make.bat двойным щелчком.

2.4. Литература по GCC
Официальная документация
Артур Гриффитс "GCC. Полное руководство"

2.5. Уменьшение размера исполняемого файла.
Удаление отладочной информации позволяет уменьшить размер испольняемого файла. Команда выглядит так:
strip имя_исполняемого_файла
Например:
Bash
1
strip main.exe
58
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2009, 11:41
Ответы с готовыми решениями:

Компиляция Objective-C в GCC
Пытаюсь выполнить компияцию кода Objective-C с помощью GCC на Windows. Для этого: 1. Установил Dev C++. В его состав входит MinGW,...

Компиляция GCC в Windows
У меня в виндусе GCC для виндуса (портированный) Я хочю на нем (5,1) скомпилировать сам компилятор из исходников. ...

GCC:Компиляция в формат elf под Windows
Можно ли при помощи gcc создать в Windows исполняемый файл в формате elf? Если можно, то как?

2
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
19.01.2017, 22:32
Некоторые поправки и добавления по пунктам:

2.1 В данный момент, самая актуальная версия MinGW находится в составе MSYS2. Краткая инструкция по установке и настройке находится на главной (той же) странице официального сайта.

2.5 Параметр -s (или --strip-all) позволяет максимально уменьшить размер исполняемого файла, удалив из него всю информацию о символах и релокации.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6102 / 2795 / 1037
Регистрация: 01.06.2021
Сообщений: 10,217
01.01.2024, 13:40
В данной статье хочу привести некоторые самые важные (на мой взгляд) опции для компиляции с помощью GCC
Разумеется, продвинутые программисты могут ознакомиться со всеми опциями в документации GCC. В этой статье лишь приведены самые основные опции для новичков.

Базовые опции
-c (компилировать или ассемблировать исходные файлы, но не линковать)
-S (остановиться после собственно компиляции; не ассемблировать)
-E (остановиться после стадии препроцессирования; не запускать собственно компилятор)
-o (поместить вывод в файл 'файл')
-v (печатать команды, которые исполняет GCC, а также его версию)

Предупреждения:
-w (отключает все предупреждения)
-Wall (включает все предупреждения)
-Wextra (включает дополнительные предупреждения, которые не включает -Wall)
-Werror (предупреждения становятся ошибками)
-Wpedantic или -pedantic (предупреждения, требуемые стандартами ISO C и ISO C++ с некоторыми исключениями. Выдает предупреждения на расширения GNU)
-pedantic-errors (предупреждения -pedantic становятся ошибками)

Оптимизация (-O):
-O0 (без оптимизации)
Различные уровни оптимизации: чем выше цифра, тем агрессивнее оптимизация
-O1
-O2 (рекомендованный вариант для релизной сборки)
-O3
Другие оптимизации
-Og (оптимизация для отладочной сборки; для отладки лучше использовать данную опцию, а не -O0)
-Os (оптимизация для размера: фактически, -O2 без некоторых оптимизаций, которые могут увеличить размер)
-Oz (агрессивная оптимизация скорее для размера, а не для скорости)
Если использовать несколько опций, то только последняя будет учитываться при компиляции.

Версии ISO C++ (лучше указать вместе с -pedantic или -pedantic-errors):
-std=c++98
-std=c++11
-std=c++14
-std=c++17
-std=c++20
-std=c++23

Версии ISO C
-std=c90
-std=c99
-std=c11
-std=c17

Опции линкера
-s (сокращает размер файла, удаляя таблицу символов и некоторую другую информацию из исполняемого файла)
-static (предотвращает динамическое связывание)
-static-libgcc (предотвращает динамическое связывание с libgcc)
-static-libstdc++ (предотвращает динамическое связывание с libstdc++)
Статическое связывание увеличивает размер исполняемого файла, но зато этот файл становится независимым и не нужно таскать с ним dll файлы, как это бывает при динамическом связывании.
-l[название библиотеки без скобок]
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.01.2024, 13:40
Помогаю со студенческими работами здесь

gcc компиляция
Проблема возникла при компиляции проекта code::block. При build and run все работает, в папке bin проекта появляется .exe Но...

Компиляция gcc
Подскажите как в VS скомпилировать программу с помощью компилятора gcc

Компиляция (gcc)
Добрый вечер! После компиляции текстовый файл становится вдруг двоичным, как следствие его невозможно открыть для исправлений. Почему? ...

Компиляция бинарника на gcc
Задача: нужно скомпилировать сырой бинарник на gcc. Он будет грузиться по адресу 0x10000 и туда же будет передаваться управление. И мне...

Компиляция проекта в gcc
Здравствуйте, форумчане! Прошу помочь разобраться! Есть программа, представленная в 3х файлах. В первом содержится описание класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru