Codeblocks как создать exe файл

Обновлено: 06.07.2024

Code::Blocks — свободная интегрированная среда разработки (IDE) с отрытым исходным кодом, которая поддерживает использование различных компиляторов. По умолчанию Code::Blocks использует компилятор MinGW, который поставляется в комплекте (можно скачать дистрибутив и без встроенного компилятора). MinGW – это вариант компилятора GNU C/C++ для Windows. MinGW – это сокращение "Minimalist GNU для Windows". Набор MinGW включает инструменты для программирования с открытым исходным кодом, которые не зависят от каких-либо платных сторонних библиотек. Он используется многими средами разработки (Visual Studio использует собственный компилятор). MinGW включает набор GNU Compiler Collection (GCC), включая компиляторы C, C ++, ADA и Fortran. Code::Blocks имеет открытую архитектуру, что позволяет ему масштабироваться за счёт подключаемых модулей (можно писать программы как под windows, linux, так и под различные микропроцессоры типа avr и stm32). Отладчик кода в Code::Blocks поддерживает точки останова в исходном коде или в данных, которые обрабатывает программа.

Установка компилятора MinGW


Нажмимаем Install и получаем следующее окно.


Здесь в поле Installation Directory указываем расположение файлов компилятора. По умолчанию это C:\MinGW, его и оставляем. Нажимаем Continue и начинается загрузка и установка менеджера для установки MinGW.


Нажимаем Continue и получаем следующее окно.


Для программированя на C++ выбираем для установки пакеты mingw32-base-bin (A Basic MinGW Installation) и mingw32-gcc-g++-bin (The GNU C++ Compiler), а затем жмём в меню Installation -> Apply Changes. Появится окно, в котором будет отображаться загрузка выбранных пакетов.


По завершении загрузки пакетов нажимаем на кнопку Close

При первом запуске Code::Blocks автоматически обнаружит установленный компилятор. При возникновении проблем необходимо перейти в меню Settings -> Compiler. и на вкладке Toolchain executables проверить правильность пути к MinGW, а также имена файлов компилятора и линковщика. Теперь можно создавать проект.

Создание проекта

Для создания проекта необходимо перейти в меню File -> New -> Project. . Либо сразу нажать на кнопку Create a new project на стартовой странице.


В появившемся окне выбираем необходимый тип проекта. Здесь мы видим, что Code::Blocks имеет большое количество шаблонов проектов. В нашем случае это Console application (консольное приложение).


В следующем окне выбираем используемый язык программирования. Выбираем C++ и нажимаем на кнопку Next.


Далее в поле Project Title вписываем название проекта. В нашем случае это Test. Тут же указываем расположение проекта на диске (поле Folder to create project in). В указанной нами папке Code::Blocks автоматически создаст папку с ранее указанным названием проекта. Указав имя папки и имя файла, нажимаем на кнопку Next.


В следующем окне выбираем компилятор, а также сценарии сборки. По умолчанию выбран GNU GCC Compiler, который мы и будем использовать. Сценарии сборки позволяют получить несколько версий одного приложения. По умолчанию предполагается два сценария: Debug (используется при отладке) и Release (сценарий компиляции готового приложения). Хотя бы один из сценариев должен быть выбран. Если выбраны оба сценария, то в дальнейшем можно будет переключаться между ними.


Жмём Finish и получаем минимальную программу, так называемый Hello World!


Нажмимаем F9 для компиляции и запуска программы и получаем следующее окно.


Обратите внимание на кнопки на панели инструментов, предназначенные для запуска и компиляции программы.


Первая слева кнопка (с желтой шестеренкой) запускает только компиляцию программы, вторая (с зеленым треугольником) запускает на исполнение последний скомпилированный файл программы, третья (с зеленым треугольником и желтой шестеренкой) — сначала запускает компиляцию программы, а затем запускает полученный exe-файл программы. Частой ошибкой является использование кнопки запуска (с зеленым треугольником) для компиляции и запуска программы. В этом случае внесенные в исходный код изменения не будут влиять на поведение программы, поскольку программа не была перекомпилирована.

Если открытый для редактирования файл был изменен, то на его вкладке слева от имени появится звездочка как на рисунке ниже. Для сохранения программ, как и во многих других приложениях достаточно нажать сочетание клавиш Ctrl+S. Расположение (путь) и имя отрытого в данный момент файла отображается в строке состояния, в левой нижней части окна.


Если ваши программы имеют небольшой объем и состоят только из одного файла, то лучше создавать не проект, а просто новый файл (File -> New -> Empty file). Связано это с тем, что если у вас несколько проектов, то Code::Blocks будет компилировать и запускать только активный проект. Определить какой проект у вас активен в текущий момент можно по состоянию окна Management, в котором показываются все открытые проекты и файлы. Если одновремено открыто несколько проектов, то название активного будет выделено полужирным шрифтом. Если окно отсутствует, то открыть его можно через меню View -> Manager.


Для переключения между проектами необходимо навести указатель мыши, на тот проект, который вы необходимо сделать активным и затем дважды кликнуть левой кнопкой мыши на названии проекта либо кликнуть один раз правой кнопкой мыши и в появившемся контекстном меню выбрать пункт Activate project. В этом же меню доступны другие действия с проектом (в том числе добавление в проект новых файлов).

Частой ошибкой является редактирование файлов одного проекта, а запуск и тестирование другого проекта. Также если у вас открыт проект и просто отдельный файл программы, то Code::Blocks будет компилировать и запускать только активный проект. Поэтому в учебных целях, когда весь проект зачастую состоит из одного файла желательно создавать не проекты, а отдельные .cpp файлы.

Поддержка кириллицы в консоли

Проблема отображения кириллических символов в консоли Windows связана с тем, что консоль в этой операционной системе имеет собственную настройку кодовой страницы. Если Windows использует кодировку cp1251 (она же windows-1251), то консоль по умолчанию использует cp866 использовавшуюся в MS-DOS. Поэтому для корректного ввода и вывода кириллицы на консоль надо использовать пару функций SetConsoleCP() и SetConsoleOutputCP() соответственно. В качестве единственного параметра обеим функциям передается номер кодовой страницы – 1251. Для использования кодировки UTF-8 необходимо передать значение CP_UTF8.

Ниже показан пример программы, которая сначала просто выводит строку с кириллическими символами, а затем считывает строку и выводит ее обратно на экран.

Далее необходимо запустить программу, щёлкнуть левой кнопкой мыши по заголовку окна (где показывается путь к запущенному .exe файлу) и в контекстном меню выбрать пункт Свойства. Затем на вкладке Шрифт установить шрифт Lucida Console и выбрать удобный размер шрифта (там же можно настроить и другие параметры). После этого символы кириллицы будут корректно отображаться. Данную настройку достаточно выполнить один раз, для других программ и проектов будет достаточно установить кодовую страницу.

Следует заметить, что при использовании только функции setlocale(LC_ALL, "Russian") вывод осуществляется в cp1251, а ввод – в cp866. Это приводит к тому, что в памяти программы введённая с кириллическими символами строка хранится в другой кодировке. Наглядно это можно увидеть, если в показанном примере закомментировать вызов функции SetConsoleCP(). Строка которую выдаст программа будет отличаться от той, что ввели с клавиатуры.

Дополнительные настройки

Сегодня я хочу поделиться своим опытом компилирования CodeBlocks из исходников под Windows 7/10. Для начинающих этот увлекательный процесс изобилует подводными камнями и особенностями.


Устанавливаем среду CodeBlocks

Замечание: Версия компилятора должна быть относительно свежей. В данном случае это gcc 8.1.0.

Устанавливаем СodeBlocks по пути, не содержащем длинные имена. Например в папку C:\Soft. Далее необходимо прописать в переменную Path путь к папке бинарных файлов MinGW "C:\Soft\codeblocks\МinGW\bin". Это можно сделать нажав Win + Pause/Break, перейти в Дополнительные параметры системы и открыть Переменные среды. Изменить можно либо системную переменную Path, либо переменную Path среды текущего пользователя (если все операции далее будут выполняться под ним).

Добавить путь к MinGW

Добавить путь к MinGW

Замечание: Установленный в системе компилятор MinGW ( gcc.exe ) должен быть один в системе, либо при запросе из командной строки быть основным доступным. Если по какой-то причине у Вас в системе есть несколько версий данного компилятора, то самым простым способом будет временно переименовать папки с другими его версиями.

Если все правильно сделано, то при вводе во вновь открытой командной строке команды gcc -v должна появиться информация о настройках и версии компилятора.

Следующим шагом необходимо настроить установки компилятора в CodeBlocks. Для этого запускаем CodeBlocks, и в параметрах Settings > Compiler > Toolchain executable настраиваем путь к папке MinGW. Параметры по умолчанию я заменил так:

C compiler: gcc.exe

C++ compiler: g++.exe

Linker for dynamic libs: g++.exe

Остальные оставил как есть:

Настройки компилятора CodeBlocks

Настройки компилятора CodeBlocks

Библиотека wxWidgets

Скачиваем исходники актуальной версии wxWidgets с сайта. На сегодня это версия wxWidgets-3.1.5. Файлы для Windows упакованы в вариантах Zip и 7z.

Создаем рабочую папку проектов C:\codeblocks\ . Распаковываем архив, получившуюся папку wxWidgets-3.1.5 переносим в C:\codeblocks\ . Необходимо также создать глобальную переменную WXWIN=c:\codeblocks\xWidgets-3.1.5 .


Прежде, чем приступать к сборке, необходимо настроить файл setup.h под требования сборки исходников CodeBlocks. Для Windows открываем в IDE файл wxWidgets - (путь_WXWIN)\include\wx\msw\setup.h

Сохраняем файл setup.h и копируем его из (путь_WXWIN)\include\wx\msw\setup.h в (путь_WXWIN)\include\wx\ .

Важно: Эти два файла всегда должны быть одинаковыми.

Далее wxWidgets необходимо собрать. Существует множество вариантов и опций сборки данной библиотеки, определяющих дальнейшие варианты ее использования в проектах. Так опция MONOLITHIC определяет, будут ли при компиляции библиотеки упакованы в единый файл. Опция SHARED задает тип библиотеки: статическая или динамическая. Опция BUILD определяет, будет ли библиотека поддерживать отладку (debug/release).

Я решил собирать сразу и статические, и динамические библиотеки для debug и для release. Эта задача определила мне 4 варианта запуска процесса со следующими ключами: (SHARED=0 MONOLITHIC=1)

SHARED=0 BUILD=debug - статическая отладочная библиотека

SHARED=0 BUILD=release - статическая библиотека для релиза

SHARED=1 MONOLITHIC=1 BUILD=debug - единая динамическая отладочная библиотека

SHARED=1 MONOLITHIC=1 BUILD=release - единая динамическая библиотека для релиза

Для сборки я сделал cmd скрипт, позволяющий частично автоматизировать подготовку и запуск процесса.

Сначала выполняется очистка результатов предыдущих попыток и удаляются каталоги с присутствующим файлом настроек setup.h, который при его отсутствии копируется из (путь_WXWIN)\include\wx\ . Удаление каталогов с данным файлом необходимо на случай его изменения. Так актуальный файл гарантированно будет скопирован в нужные каталоги при сборке. Сборка запускается в 4х независимых cmd процессах, что позволяет несколько полнее загрузить процессор (если у него несколько ядер и потоков) и этим ускорить процесс. Сам процесс сборки у wxWidgets обычно происходит стабильно успешно, но занимает длительное время. У меня обычно на это уходит до 3х часов. В итоге в папке lib wxWidgets появляются две подпапки - gcc_dll и gcc_lib c полным набором релизных и отладочных библиотек. Разница в названиях таких библиотек в наличии 'суффикса' d в имени файла.

Дальше необходимо открыть среду CodeBlocks и в меню Settings > Global Variables добавить переменные wx, wx31, wx31_64. В наборе данных указывается полные пути к папке wxWidgets, вложенным папкам include и lib:

lib = C:\codeblocks\wxWidgets-3.1.5\lib

Глобальный путь lib указываем к папке со статически линкуемым набором библиотек.


В принципе среда CodeBlocks может и сама запрашивать глобальные переменные, если такие встречаются в проекте.

Теперь можно попробовать собрать тестовый wxWidgets проект, чтобы убедиться, что все сделано правильно. В опциях при создании проекта выбираем wxWidgets 3.1.x (wxSmith, Frame Based). В процессе работы мастера проекта можно увидеть применение уже созданной переменной wx на странице, где требуется указать расположение wxWidgets. Здесь ничего менять не надо, т.к. нужные настройки уже существуют.


Далее нужно отметить сборку проекта Monolithic, т.к. наша библиотека wxWidgets собиралась именно с такой опцией. Также необходима опция Enable unicode.


После успешной проверки сборки WX проекта можно переходить непосредственно к сборке CodeBlocks из исходников.

Сборка CodeBlocks

Сначала я взял исходники codeblocks с сайта проекта, и пытался собрать их. На борьбу с разными ошибками и зависимостями ушло несколько дней, пока я не встретил на одном из сайтов рекомендацию брать исходники из SVN репозитория проекта.

Замечание: Исходники CodeBlocks для сборки скачивайте из SVN репозитория проекта.

Настройка подключения к проекту CodeBlocks Экспорт ветки репозитория Сохраняем локально в проекты

Теперь у нас есть актуальные исходники проекта codeblocks для сборки.

Для работы скриптов при сборке проекта codeblocks необходимо наличие в системе доступной для запуска из консоли утилиты Zip. У кого такой утилиты нет, ее можно скачать и установить из источника, прописав в системной переменной Path путь к исполняемому файлу. Утилита должна находиться и выполняться из cmd.

Запускаем установленную ранее IDE CodeBlocks, открываем проект CodeBlocks_wx31_64.workspace из папки C:\codeblocls\codeblocks\src\ . Как видно, проект ориентирован на сборку с wxWidgets 3.1.x и x64. В папке присутствуют и другие проекты, но использованный мной компилятор изначально собирает проекты под 64-битную ОС.

На понимание этих тривиальных фактов и исправление у меня ушло пару дней (и опять не одна пересборка wxWidgets).

При открытии проекта IDE нашла и запросила очередную глобальную переменную cb_release_type. Это флаг типа сборки, в поле base вводим -g для сборки с отладочной информацией (либо -O2 для релизной сборки с оптимизацией), и закрываем окно.


В списке проектов находим NassiShneiderman wx3.1.x . Его необходимо отключить, т.к. он требует зависимости, решения к которым я пока не нашел. Отключаем в меню Properties данного проекта на вкладке Build target . Во всплывающем списке Platform нужно снять галку с Windows и поставить на Unix или Mac. После этого данный проект будет исключен из списка компиляции. Среда CodeBlocks при этом может внезапно обнаружить глобальную переменную boost. Оставляем ее как есть (invalid).

Запускаем сборку всего Workspace и ждем ее окончания. После окончания сборки текущий Workspace можно закрыть.

Теперь необходимо запустить скрипт Update31_64.bat из папки проекта codeblocks. Переходим в папку C:\codeblocks\codeblocks\src и запускаем данный скрипт. Происходит магические действия по подготовке и упаковке бинарников собранного ранее проекта.

После этого копируем библиотеку wxmsw315u_gcc_custom.dll из папки C:\codeblocks\wxwidgets-3.1.5\lib\gcc_dll в папку C:\codeblocks\codeblocks\src\devel31_64. Закрываем открытую ранее IDE CodeBlocks и пробуем запустить файл codeblocks.exe из C:\codeblocks\codeblocks\src\devel31_64.

Запуск скомпилированного CodeBlocks Это работает

И так, кратко резюмирую основные трудности:

Компилятор для всех выполняемых работ должен быть один.

Версия компилятора должна быть актуальной и стабильной

Библиотека wxWidgets также должны быть актуальной.

Исходники codeblocks необходимо брать из репозитория.

Важно помнить разрядность собранных библиотек wxWidgets и выбирать соответствующий проект codeblocks.

Изменение системных переменных среды в загруженной IDE не обновляются, требуется ее перезапуск.

Добрый день. Недавно начал поставил себе Линукс, и сейчас имею некоторые проблемы с компиляцией программ в Code Blocks. Дело в том, что вместо файла .exe в папке Debug появляется файл с типом - Программа (application/x-executable). Каким образом мне именно получить exe-файл? P.S. Система Linux mint 18, Code::blocks версии 16.01, компилятор CNU GCC Compiler


Использовать компилятор из состава mingw.


А с чего ты взял, что у тебя должен появиться именно exe-шник? Твоё приложение собралось, ты получил исполняемый файл. Попробуй запустить — убедишься, что это оно.

Если тебе надо получить бинарь, которая будет запускаться в виндах, то тебе нужно кросскомпиляцию настраивать. А если бинарь, который у тебя же в минте должен запускаться, то всё хорошо, так и должно быть

А можно чуть подробнее, как это сделать? В частности, в терминале как это сделать, если возможно.

.exe - это просто дописка к имени файла. не парься.

Вы хотите кросскомпиляцию? Чтобы бинарник в Windows запускался? В линуксе исполняемые файлы не имеют расширения exe, их можно просто запустить.

Мне нужен именно что бы был файл exe, повторюсь. Нужно запускать программу с винды, на другом компе. Можешь расписать как его сделать?

А как именно конвертировать в exe?


Ты понимаешь, что если ты только начал работать с ОС Linux, то такие вещи как кросс-компиляция тебе еще рано?


Тогда, как уже советовали выше, тебе нужен mingw. Расписать не могу, ибо собирать под винды не приходилось

Всем большое спасибо за ответы ребята. Не ожидал что комьюнити линуксоидов такое отзывчивое и адекватное.


и парой слов это не опишешь. Смотри пример и ищи аналогичные темы.

тут такая история, бро. бинарный формат исполняемых файлов в линукс и виндовс - разный. и сборка исполняемого файла для линукса и виндовс происходит по-разному (разными инструментами). и исполняться линуксовые исполняшки на винде не могут (и наоборот).

и тут мы приходим к вопросу - а чего тебе нужно, собственно? собрать на линуксе исполняемый файл для виндовс? тогда смотри в гугль про mingw и кросскомпиляцию (это длинный квест).

если тебе нужен исполняемый файл для линукса - то ты его уже имеешь (если сборка прошла без ошибок). запускай.

.exe как расширение для исполняемых файлов (т.е. часть имени файла) в линуксе не особо применяется, т.к. ни на что не влияет, в отличие от виндовса опять же.

conalex ★★★ ( 06.12.16 16:34:16 )
Последнее исправление: conalex 06.12.16 16:38:34 (всего исправлений: 1)


Недавно собирал CoolReader со статическим Qt под Windows на убунточке, предварительно собрав сам Qt 4. Использовал CMake и MinGW-w64, пиши в телеграм (контакты в профиле), если что помогу тебе собрать EXE'шник. Но с Code::Blocks не работал, так как это мёртвое и глючное IDE, которое уже давно не обновляется и не развивается.

Тебе нужен тулчейн x86_64-w64-mingw32 или типа того. Возможно, в репозитории твоего дистрибутива уже есть пакет для этого.


это довольно глубокая тема. во-первых, тебе нужен тулчейн для компиляции, но кроме тулчейна обычно нужен ещё вагон и маленькая тележка всякой фигни. если софтина не чисто сишная, на стандартных вызовах, то нужны будут ещё всякие библиотеки вендозные, ресурсы и т.д. в общем, это тема для долгой и упорной возни и точно не для начинающего.

пиши в телеграм (контакты в профиле), если что помогу тебе собрать EXE'шник.

Я бы тоже с удовольствием почитал. Может, статейку напишешь, а?


Прости, анончик, но маловато там материала для статейки.

Первым делом я установил пакет mingw-w64-i686-dev .

Потом сконфигурировал сорцы, с флагами -static и -platform win32-g++ , отключив всякие ненужные вещи вроде WebKit'а и QtQuick.

Далее склонировал сорцы CoolReader и создал Cmake-файл тулчейна:

Затем сконфигурировал их командой:

CMake весьма костылен, поэтому ему нужно чёткое определение переменной QT_QMAKE_EXECUTABLE , так как без него кросс-компиляция не работает и qmake берётся системный, а не собранный.

Ну и затем обычные make -j21 && make install для получения исполняемого файла по выньду.

Не ожидал что комьюнити линуксоидов такое отзывчивое и адекватное.

Использование среды разработки Code::Blocks для программирования Launchpad

(инструкция, переведённая, собранная из кусочков отсюда)

1. Скачиваем с официального сайта среду разработки Code::Blocks

2. Скачиваем набор компилятора mspgcc

Code::blocks

Code::blocks

Code::blocks

Code::blocks

Code::blocks

8. Настраиваем компилятор:

Code::blocks

C Compiler: msp430-gcc.exe
C++ compiler: msp430-g++.exe
Linker for dynamic libs: msp430-gcc.exe
Linker for static libs: msp430-gcc.exe
Make program: make.exe

Code::blocks

Code::blocks

Code::blocks

Code::blocks

Code::blocks

Code::blocks

Добавляем в файл следующее содержимое (для примера, можете добавить что-то своё):

WDTCTL = WDTPW + WDTHOLD; // останавливаем Watchdog;

и сохраняем его.

Code::blocks

Code::blocks

Теперь мы можем создать новый проект из нашего шаблона:

Code::blocks

Code::blocks

После сборки проекта будет выводиться информация о размере файла для загрузки в контроллер и другая информация, примерно такая:

-------------- Build: Debug in msp430-test (compiler: GNU GCC Compiler for MSP430)---------------
msp430-gcc.exe -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=msp430g2553 -c main.c -o obj\Debug\main.o
main.c:3:6: warning: return type of 'main' is not 'int' [-Wmain]
msp430-gcc.exe -o bin\Debug\msp430-test.exe obj\Debug\main.o -Os -Wl,-gc-sections,-u,main -mmcu=msp430g2553
Output size is 7.47 KB
Running target post-build steps
c:\hightec\msp430\bin\msp430-size.exe C:\CodeBlocks-Projects\msp430-test\bin\Debug\msp430-test.exe
text data bss dec hex filename
112 0 2 114 72 C:\CodeBlocks-Projects\msp430-test\bin\Debug\msp430-test.exe
Process terminated with status 0 (0 minutes, 11 seconds)
0 errors, 1 warnings (0 minutes, 11 seconds)

Code::blocks

Code::blocks

1. Написать проект;

2. Собрать (Build) наш проект для launchpad, убедиться в отсутствии ошибок в выводе компилятора

3. Загрузить получившийся файл в контроллер (Tools/Upload)

Code::blocks

Читайте также: