|
3149 / 369 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
|
|||||||||||||||||||||||||||||||
GCC - компиляция C/C++ программ07.11.2009, 11:41. Показов 203314. Ответов 2
Метки нет (Все метки)
Обсуждение приветствуется , буду рад пожеланиям по улучшению данной статьи.
![]() Статья в процессе написания, пожелания пишите сюда ОГЛАВЛЕНИЕ 1. Предисловие 2. Руководство 2.1. Установка MinGW на Windows.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 путь_к_папке_с_исходником например:
g++ исходный_файл Например:
4) Если исходники вашей программы состоят из нескольких файлов, то можно написать их имена через пробел: g++ первый_исходный_файл второй_исходный_файл Например:
6) Если вы не хотите каждый раз возится с консолью, можете создать *.bat файл и записать в него все необходимые команды. Делается это так: создаете текстовой документ, открываете его с блокнотом и записываете в него необходимые команды, примерно так:
2.4. Литература по GCC Официальная документация Артур Гриффитс "GCC. Полное руководство" 2.5. Уменьшение размера исполняемого файла. Удаление отладочной информации позволяет уменьшить размер испольняемого файла. Команда выглядит так: strip имя_исполняемого_файла Например:
58
|
|||||||||||||||||||||||||||||||
| 07.11.2009, 11:41 | |
|
Ответы с готовыми решениями:
2
Компиляция Objective-C в GCC Компиляция GCC в Windows GCC:Компиляция в формат elf под Windows |
|
|
|
| 19.01.2017, 22:32 | |
|
Некоторые поправки и добавления по пунктам:
2.1 В данный момент, самая актуальная версия MinGW находится в составе MSYS2. Краткая инструкция по установке и настройке находится на главной (той же) странице официального сайта. 2.5 Параметр -s (или --strip-all) позволяет максимально уменьшить размер исполняемого файла, удалив из него всю информацию о символах и релокации.
1
|
|
|
6221 / 2919 / 1046
Регистрация: 01.06.2021
Сообщений: 10,809
|
|
| 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
|
|
| 01.01.2024, 13:40 | |
|
Помогаю со студенческими работами здесь
3
gcc компиляция Компиляция gcc Компиляция (gcc) Компиляция бинарника на gcc Компиляция проекта в gcc Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|