Как сделать свой exe компилятор

Добавил пользователь Дмитрий К.
Обновлено: 10.09.2024

Приветствую вас в блоге Компьютер76, и в этой статье мы разберём вопрос о том, как происходит компиляция программ на языке С, и что понадобится для того, чтобы кодовый файл в текстовом формате, созданный лично или скачанный из сети, превратился в исполняемый файл типа .exe.



Компиляция программ на языке С. Что нам понадобится?

Процесс крайне прост. Для того, чтобы всё прошло гладко, нам понадобятся:

  • компилятор С++ (ссылка для скачивания чуть ниже)
  • возможность менять расширение файлов в Windows. Для этого достаточно перейти по пути:

Пуск — Панель управления (Мелкие значки) — Параметры папок

Для начала установим программу Borland C++ compiler для Windows, скачав версию c++ 5.51 прямо с моего блога. Вы скачаете архив с установщиком, который можно поместить прямо на Рабочий стол.

Установка Borland C++ compiler

  • Запустите исполнительный файл и следуйте инструкциям, не меняя пути установщика по умолчанию (это будет директория С:/Borland). Не обращайте внимание на просьбу Windows переустановить программу: она установлена правильно;
  • теперь нам следует создать два простых текстовых документа. По ходу дела их расширения изменятся, так что у вас должна уже быть настроена возможность изменять расширения файлов вручную. Если всё готово, тогда создадим текстовик с помощью хоть Блокнота с содержимым всего в 2 строки:

И сохраним с типом Все файлы под именем bcc32.cfg:

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

Следующий файл будет содержит уже одну только строчку и создаётся на тот же манер:

Он у нас будет называться ilink32.cfg.

Создали? Теперь просто скопируем оба файла и перетащим их в недавно созданную папку компилятора C:\Borland\BCC55\Bin.

Компиляция программ на языке С. Как это делается?

Сам процесс компиляции много не займёт:

  • нужный файл.c отправляете в папку C:\Borland\BCC55\Bin
  • после открываете командную консоль с правами администратора
  • переходите в папку с помощью команды cd:

компиляция программ

Через некоторое время в этой же папке появится исполнительный файл с таким же именем, но расширением .exe.

Python становиться с каждым годом все популярней особенно у новичков. На самом деле это и понятно? так как синтаксис языка в отличает от других языков программирования, достаточной простой и если немного почитать мануалы и посмотреть ролики на ютубе можно написать простенькую программу. Возможности Python практически безграничные, на нем можно написать все что угодно. Например, в прошлой статье я рассказывал о том как можно создавать программы с графическим интерфейсом. Сегодня же поговорим о том как можно сделать программу которая будет запускаться на любом компьютере с Windows без установленного Python, если проще говоря покажу как можно преобразовать файл .py в .exe.

Если вы только начали изучать Python то следующие статьи будут Вам очень полезны.

Компилируем код Python в файл exe

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

Py в exe

Если же установка прошла без ошибок, тогда нужно перейти в директорию где у вас храниться файл скрипт командой

Для компиляции вводим следующею команду

test.py — ваш скрипт

Как из py сделать exe

Компилируем код Python в файл exe

Но как мы видим у нас получился не один файл и несколько. Что бы сделать из py всего один файл exe, нужно ввести туже команду но только добавить специальный флаг.

код Python в файл exe быстро и просто

Компилируем код Python в файл exe быстро и просто

Как видите скомпилировать скрипт и сделать из py exe достаточно просто, но есть несколько нюансов.

Если у вас код достаточно большой то готовьтесь к тому что и файл exe будет внушительных размеров, для примера могу сказать что код из 60 строк будет весить 110-120 Mb.

Так же если код скомпилирован в 64 битной ОС то в 32 битной он не пустится. Если код скомпилирован в 32 битной то он будет работать и 64 битной.

Что вы делаете, когда создаете новое программное обеспечение для Windows — от простого диагностического инструмента до сложной компьютерной видеоигры — и хотите поделиться им со всем миром? Что ж, вы можете сжать файлы в один ZIP-файл и распространить его.

Или вы можете пофантазировать и вместо этого создать установщик EXE.

В этом посте мы рассмотрим три различных способа создания EXE: самораспаковывающийся пакет, простой установщик с использованием встроенного IExpress и расширенный установщик с помощью настраиваемой Inno Setup.

1. Создайте быстрый EXE-файл с помощью 7-Zip.

Вероятно, вы уже используете 7-Zip для извлечения всех видов архивных файлов и знаете, что 7-Zip может создавать архивные файлы, но знаете ли вы, что вы также можете использовать его для создания EXE-файла, который действует как установщик?

Он называется SFX-архивом (самораспаковывающимся) и работает, сжимая все ваши конечные файлы вместе, а затем встраивая в архив специальный EXE-файл, который знает, как все распаковать.

Другими словами, получатель может извлечь SFX-архив (который выглядит как EXE-файл), даже если у него нет нужного программного обеспечения, что может случиться с такими форматами, как 7Z, RAR, TAR и ZIP.


Вот как создать SFX-архив с помощью 7-Zip:

2. Как использовать IExpress для простого создания EXE

IExpress — это утилита, которая поставляется в комплекте с версиями Windows, начиная с Windows XP и выше. Утилита поставляется с внешним графическим интерфейсом (называемым IExpress Wizard), но вы также можете создавать файлы установщика, используя файлы директивы самоизвлечения (SED), написанные вручную. Мы рекомендуем Мастера.

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

И вот как вы создаете свой установщик EXE с помощью IExpress:


Ваш пакет будет создан через несколько минут. Обратите внимание, что у IExpress есть некоторые особенности и проблемы:

Из-за этих странностей мы рекомендуем вместо этого использовать метод, описанный ниже.

Связанный: Что такое GUI (графический интерфейс пользователя)?

3. Лучший способ создать EXE: используйте Inno Setup.

Inno Setup — это утилита с открытым исходным кодом, которая активно разрабатывается с 1997 года. Она была создана частично в ответ на то, что в то время было второстепенным InstallShield Express. С тех пор он стал предпочтительным создателем установщика для тех, кто не хочет изучать проприетарные варианты.


Теперь выполните следующие действия, указанные ниже:

На странице настроек компилятора вы можете настроить EXE-файл установщика:

После настройки параметров нажмите Готово. Когда будет предложено скомпилировать новый сценарий, нажмите Да. Когда будет предложено сохранить сценарий, выберите Нет, если это одноразовый файл установщика. Выберите Да, если вы планируете изменить или обновить его позже.

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

Какой метод лучше всего подходит для создания установщика EXE?

Если у вас базовое программное обеспечение или вы собираетесь распространять его среди ограниченного числа людей, используйте метод 7-Zip. Это просто, быстро и практически не требует технических знаний.

Если ваше программное обеспечение несколько простое, и вы хотите предоставить конечным пользователям настоящий мастер установки, воспользуйтесь методом IExpress. Наконец, выберите приложение Inno, если у вас сложное программное обеспечение и вы знаете, что делаете.

Самой очевидной причиной является отсутствие Visual Studio 2010 или какой-то другой графической IDE-среды.

Работа может выполняться в университете, где использование инструментов для генерации кода и IDE-сред обычно запрещено.

Планируется применение автоматизированных средств разработки, таких как msbuild.exe, которые требуют знать опции командной строки для используемых инструментов.

Указание целевых входных и выходных параметров

Первым делом важно разобраться с тем, как указывать имя и тип создаваемой сборки (т.е., например, консольное приложение по имени MyShell.exe, библиотека кода по имени MathLib.dll или приложение Windows Presentation Foundation по имени Halo8.ехе). Каждый из возможных вариантов имеет соответствующий флаг, который нужно передать компилятору csc.ехе в виде параметра командной строки.

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

Параметры компилятора csc.exe
Параметр Описание
/out Этот параметр применяется для указания имени создаваемой сборки. По умолчанию сборке присваивается то же имя, что у входного файла *.сs
/target:exe Этот параметр позволяет создавать исполняемое консольное приложение. Сборка такого типа генерируется по умолчанию, потому при создании подобного приложения данный параметр можно опускать
/target:library Этот параметр позволяет создавать однофайловую сборку *.dll
/target:module Этот параметр позволяет создавать модуль. Модули являются элементами многофайловых сборок
/target:winexe Хотя приложения с графическим пользовательским интерфейсом можно создавать с применением параметра /target: ехе, параметр /target: winexe позволяет предотвратить открытие окна консоли под остальными окнами

Чтобы скомпилировать TestApplication.cs в консольное приложение TestApplication.exe, перейдите в каталог, в котором был сохранен файл исходного кода (с помощью флага cd) и введите следующую команду:

Компиляция приложения с помощью csc.exe

Теперь можно попробовать запустить приложение TestApplication.ехе из командной строки, введя имя его исполняемого файла:

Запуск приложения через коммандную строку

Добавление ссылок на внешние сборки

Далее в командной строке нужно проинформировать компилятор csc.exe о том, в какой сборке содержатся используемые пространства имен. Поскольку применялся класс MessageBox из пространства имен System.Windows.Forms, значит, нужно указать компилятору на сборку System.Windows.Forms.dll, что делается с помощью флага /reference (или его сокращенной версии /r):

Привязка ссылки на внешнюю сборку


Кстати, как поступить, когда необходимо указать csc.exe несколько внешних сборок? Для этого нужно просто перечислить все сборки через точку с запятой. В рассматриваемом примере ссылаться на несколько сборок не требуется, но ниже приведена команда, которая иллюстрирует перечисление множества сборок:

csc /r:System.Windows.Forms.dll;System.Drawing.dll *.cs

Компиляция нескольких файлов исходного кода

Изменим исходный класс TestApplication так, чтобы в нем использовался класс этого нового типа:

Компиляция нескольких файлов исходного кода

Компиляция нескольких файлов исходного кода с использованием группового символа *

Вывод, получаемый после запуска этой программы, идентичен предыдущей программе. Единственное отличие между этими двумя приложениями связано с разнесением логики по нескольким файлам.

Компиляция ответного файла .rsp

В случае необходимости допускается также указывать и несколько ответных *.rsp файлов в качестве входных параметров (например, csc @FirstFile.rsp @SecondFile.rsp @ThirdFile.rsp). При таком подходе, однако, следует иметь в виду, что компилятор обрабатывает параметры команд по мере их поступления. Следовательно, аргументы командной строки, содержащиеся в поступающем позже файле *.rsp, могут переопределять параметры из предыдущего ответного файла.

Параметры файла csc.rsp

Компиляция приложения с помощью стандартного файла rsp

Стоит отметить, что в случае добавления с помощью опции /r ссылок на сборки, которые на самом деле не используются, компилятор их проигнорирует. Поэтому беспокоиться по поводу "разбухания кода" не нужно.

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