Download Article
Download Article
If you’ve written or downloaded some C code on your Windows PC, you’ll need to compile the code to turn it into an program you can run. This simple wikiHow tutorial will walk you through compiling and running a C program from the Windows command prompt using MinGW, an easy-to-install version of the GCC compiler.
Steps
-
1
Install MinGW, a simple C compiler. If you haven’t already done so, you’ll need to install a C compiler on your PC to compile the C program. Compiling the C code will turn the code into an executable C program. MinGW is one of the easiest options to install for Windows:
- Download MinGW from https://sourceforge.net/projects/mingw.
- Double-click the downloaded file and follow the on-screen instructions to prepare the installation.
- When you get to the MinGW Installation Manager window, you’ll see several packages in the upper-right panel.
- Check the boxes next to «mingw32-base» and «mingw-gcc-g++.»
- Click the Installation menu and select Apply Changes.
- Click Apply.
-
2
Add the compiler’s path to your system environment variables. This step makes it easier to run the compiler from the command prompt, as you won’t have to enter the full path to the GCC program.
- Press the Windows key and type environment. Click Edit the system environment variables in the search results.
- Click the Environment Variables… button.
- Select the «Path» option under «System variables» and click Edit…
- Click New.
- Type C:MinGWbin and click OK.
- Click OK and OK again.
Advertisement
-
3
Open a Command Prompt window as an administrator. To do this, press the Windows key, type cmd, right-click Command Prompt, and then select Run as Administrator.
- Once the prompt window is open, double-check that the compiler installed properly (and that the environment variables are set) by running the command gcc -- version at the prompt.
- If you already had a command prompt window open, close it and open another so the path you added
-
4
Use the cd command to go to the directory where your C program is saved. For example, if the program you want to compile is in C:MyPrograms, type cd C:MyPrograms and press Enter.
-
5
Run the gcc command to compile your C program. The syntax you’ll use is gcc filename.c -o filename.exe. This compiles the program and makes it executable.
- Replace filename.c with the name of the file containing your C code, and filename.exe with the name you want to give the compiled program.
- Make sure you give the compiled program a name that ends with .exe.
- The -o flag specifies the output file.
-
6
Type the name of your new program and press ↵ Enter. For example, if you created a program called hello.exe, you can type hello or hello.exe. This runs your C program from the command prompt.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Thanks for submitting a tip for review!
About This Article
Article SummaryX
1. Install MinGW.
2. Add the compiler path to your system environment variables.
3. Open an elevated command prompt window.
4. Enter the directory of the C code.
5. Type gcc filename.c -o filename.exe and press Enter to compile.
6. Run the program by typing its name and pressing Enter.
Did this summary help you?
Thanks to all authors for creating a page that has been read 103,879 times.
Is this article up to date?
Download Article
Download Article
If you’ve written or downloaded some C code on your Windows PC, you’ll need to compile the code to turn it into an program you can run. This simple wikiHow tutorial will walk you through compiling and running a C program from the Windows command prompt using MinGW, an easy-to-install version of the GCC compiler.
Steps
-
1
Install MinGW, a simple C compiler. If you haven’t already done so, you’ll need to install a C compiler on your PC to compile the C program. Compiling the C code will turn the code into an executable C program. MinGW is one of the easiest options to install for Windows:
- Download MinGW from https://sourceforge.net/projects/mingw.
- Double-click the downloaded file and follow the on-screen instructions to prepare the installation.
- When you get to the MinGW Installation Manager window, you’ll see several packages in the upper-right panel.
- Check the boxes next to «mingw32-base» and «mingw-gcc-g++.»
- Click the Installation menu and select Apply Changes.
- Click Apply.
-
2
Add the compiler’s path to your system environment variables. This step makes it easier to run the compiler from the command prompt, as you won’t have to enter the full path to the GCC program.
- Press the Windows key and type environment. Click Edit the system environment variables in the search results.
- Click the Environment Variables… button.
- Select the «Path» option under «System variables» and click Edit…
- Click New.
- Type C:MinGWbin and click OK.
- Click OK and OK again.
Advertisement
-
3
Open a Command Prompt window as an administrator. To do this, press the Windows key, type cmd, right-click Command Prompt, and then select Run as Administrator.
- Once the prompt window is open, double-check that the compiler installed properly (and that the environment variables are set) by running the command gcc -- version at the prompt.
- If you already had a command prompt window open, close it and open another so the path you added
-
4
Use the cd command to go to the directory where your C program is saved. For example, if the program you want to compile is in C:MyPrograms, type cd C:MyPrograms and press Enter.
-
5
Run the gcc command to compile your C program. The syntax you’ll use is gcc filename.c -o filename.exe. This compiles the program and makes it executable.
- Replace filename.c with the name of the file containing your C code, and filename.exe with the name you want to give the compiled program.
- Make sure you give the compiled program a name that ends with .exe.
- The -o flag specifies the output file.
-
6
Type the name of your new program and press ↵ Enter. For example, if you created a program called hello.exe, you can type hello or hello.exe. This runs your C program from the command prompt.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Thanks for submitting a tip for review!
About This Article
Article SummaryX
1. Install MinGW.
2. Add the compiler path to your system environment variables.
3. Open an elevated command prompt window.
4. Enter the directory of the C code.
5. Type gcc filename.c -o filename.exe and press Enter to compile.
6. Run the program by typing its name and pressing Enter.
Did this summary help you?
Thanks to all authors for creating a page that has been read 103,879 times.
Is this article up to date?
Последнее обновление: 01.01.2023
Установка компилятора
Рассмотрим создание первой простейшей программы на языке Си с помощью компилятора GCC, который на сегодняшний день является одим из
наиболее популярных компиляторов для Cи и который доступен для разных платформ. Более подобному информацию о GCC можно получить на официальном сайте проекта https://gcc.gnu.org/.
Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от
некоммерческого проекта MSYS2. Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)
Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:
После загрузки запустим программу установки:
На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:msys64:
Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка.
После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить
После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось,
то в папке установки C:/msys64 надо найти файл usrt_64.exe:
Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:
pacman -S mingw-w64-ucrt-x86_64-gcc
Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менелжеру packman установить пакет mingw-w64-ucrt-x86_64-gcc
,
который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S
).
и после завершения установки мы можем приступать к программированию на языке Си. Если мы откроем каталог установки и зайдем в нем в папку C:msys64ucrt64bin,
то найдем там все необходимые файлы компиляторов:
В частности, файл gcc.exe как раз и будет представлять компилятор для языка Си.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:
Нам откроется окно Переменныех среды:
И добавим путь к компилятору C:msys64ucrt64bin
:
Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:
В этом случае нам должна отобразиться версия компиляторов
Создание первой программы
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода.
Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c.
В моем случае файл hello.c находится в папке C:c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include <stdio.h> // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main { // начало функции printf("Hello METANIT.COM!n"); // выводим строку на консоль return 0; // выходим из функции } // конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include <stdio.h>
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void). Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается
выполнение приложения.
Ключевое слово int в определении функции int main(void)
говорит о том, что функция возвращает целое число.
А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки {}. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello METANIT.COM!».
В конце осуществляем выход из функции с помощью оператора return. Так как функция должна возвращать целое число, то после return указывается число 0.
Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.
Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.c:
После этого будет скомпилирован исполняемый файл, который в Windows по умолчанию называется a.exe. И мы можем обратиться к этому файлу
и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.
Стоит отметить, что мы можем переопределить имя компилируемого файла с помощью флага -o и передав ему имя файла, в который будет компилироваться программа.
Например:
В этом случае программа будет компилироваться в файл hello.exe
, который мы также запустить.
Чтобы не приходилось вводить две команды: одну для компиляции программы и другую для ее запуска, мы можем объединить команды:
gcc hello.c -o hello.exe && hello
Эта команда сначала компилирует код в файл hello.exe, а потом сразу запускает его.
I know that everyone uses an IDE nowadays, but I just find it simpler to write my code in notepad++, compile it using a command prompt command, and run it from there too. At least that works for Java and Python. I’ve tried to get my head around how to do that with C++, and haven’t been able to find anything good. Is there any compiler (like Java’s JDK) that I can stick into my path and use the C++ equivalent of javac
and java
to run and compile my code from CMD?
Note: please don’t post answers and comments about how IDEs are better — I know they are. I’m just used to doing it the old way
sepp2k
360k52 gold badges670 silver badges673 bronze badges
asked Jul 6, 2012 at 16:07
4
Steps to perform the task:
-
First, download and install the compiler.
-
Then, type the C/C++ program and save it.
-
Then, open the command line and change directory to the particular one where the source file is stored, using
cd
like so:cd C:Documents and Settings...
-
Then, to compile, type in the command prompt:
gcc sourcefile_name.c -o outputfile.exe
-
Finally, to run the code, type:
outputfile.exe
ib.
27.1k10 gold badges78 silver badges100 bronze badges
answered Jul 6, 2012 at 16:19
codeDEXTERcodeDEXTER
1,1417 silver badges14 bronze badges
7
If you’re running Windows then make use of this:
g++ -o program program.cpp
g++
is the name of the compiler and -o
is the option needed for creating a .o
file. Program (without .cpp
suffix) is the exe
file and program.cpp
is your source file that you want to compile.
g++ -o program program.cpp&program.exe
Use this shortcut to run the .exe
file of the program. This might run in Linux but you may have to use .out
suffix instead of .exe
. Use this handy batch script to execute your programs on Windows:
@echo off&&cls
set /p pathName=Enter The Path where the file is located:%=%
cd %pathName%
REM set /p exec=Enter The Name of the executable you want to make:%=%
set /p file=Enter The Name of the file you want to compile:%=%
g++ -o %file% %file%.cpp
%file%.exe
save it as cppExecutor.bat
Also you could use the following commands on Unix (Linux and Mac) OS:
CC program.cc
If you want to use gcc
:
gcc -o program program.cpp
With the shortcut:
gcc -o program program.cpp&program.exe
answered May 31, 2016 at 13:56
JedaiCoderJedaiCoder
6267 silver badges12 bronze badges
2
It depends on what compiler you’re using.
For example, if you are using Visual C++ .NET 2010 Express, run Visual C++ 2010 Express Command Prompt from the start menu, and you can simply compile and run the code.
> cl /EHsc mycode.cpp
> mycode.exe
or from the regular command line, you can run vcvars32.bat
first to set up the environment. Alternatively search for setvcvars.cmd
(part of a FLOSS project) and use that to even locate the installed VS and have it call vcvars32.bat
for you.
Please check your compiler’s manual for command lines.
0xC0000022L
20.2k9 gold badges82 silver badges149 bronze badges
answered Jul 6, 2012 at 16:17
RangoRango
1,0777 silver badges5 bronze badges
1
Sure, it’s how most compilers got started. GCC is probably the most popular (comes with most flavors of *nix). Syntax is just gcc my_source_code.cpp
, or gcc -o my_executable.exe my_source_code.cpp
. It gets more complicated, of course, when you have multiple source files (as in implementation; anything #include
d works automatically as long as GCC can find it).
MinGW appears to be a version of GCC for Windows, if that’s what you’re using. I haven’t tried it though.
Pretty sure most IDEs also include a command line interface. I know Visual Studio does, though I have never used it.
answered Jul 6, 2012 at 16:15
KRyanKRyan
7,0992 gold badges39 silver badges66 bronze badges
1
I really don’t see what your problem is, the question is rather unspecific. Given Notepad++ I assume you use Windows.
You have so many options here, from the MinGW (using the GCC tool chain and GNU make
) to using a modern MSVC. You can use the WDK (ddkbuild.bat/.cmd
or plain build.exe
), the Windows SDK (nmake.exe
), other tools such as premake and CMake, or msbuild
that comes with MSVC and the Windows SDK.
I mean the compiler names will differ, cl.exe
for MSVC and the WDK and Windows SDK, gcc.exe
for MinGW, but even from the console it is customary to organize your project in some way. This is what make
and friends were invented for after all.
So to know the command line switches of your particular compiler consult the manual of that very compiler. To find ways to automate your build (i.e. the ability to run a simple command instead of a complex command line), you could sift through the list on Wikipedia or pick one of the tools I mentioned above and go with that.
Side-note: it isn’t necessary to ask people not to mention IDEs. Most professional developers have automated their builds to run from a command line and not from within the IDE (as during the development cycle for example), because there are so many advantages to that approach.
answered Jul 6, 2012 at 16:13
0xC0000022L0xC0000022L
20.2k9 gold badges82 silver badges149 bronze badges
2
- Download MinGW form : https://sourceforge.net/projects/mingw-w64/
- use notepad++ to write the C++ source code.
- using command line change the directory/folder where the source code is saved(using notepad++)
- compile: g++ file_name.cpp -o file_name.exe
- run the executable: file_name.exe
answered Mar 12, 2019 at 1:32
3
- first Command is :
g++ -o program file_name.cpp
- Second command is :
.program.exe
Let us Check this image
SCouto
7,6685 gold badges34 silver badges49 bronze badges
answered Jul 12, 2020 at 4:06
A better alternative to MinGW is bash for powershell. You can install bash for Windows 10 using the steps given here
After you’ve installed bash, all you’ve got to do is run the bash command on your terminal.
PS F:cpp> bash
user@HP:/mnt/f/cpp$ g++ program.cpp -o program
user@HP:/mnt/f/cpp$ ./program
answered Mar 25, 2020 at 7:01
1
This is what I used on MAC.
Use your preferred compiler.
Compile with gcc.
gcc -lstdc++ filename.cpp -o outputName
Or Compile with clang.
clang++ filename.cpp -o outputName
After done compiling. You can run it with.
./outputFile
answered Dec 21, 2020 at 17:32
JoeJoe
7831 gold badge7 silver badges14 bronze badges
Open cmd and go In Directory where file is saved. Then,
For compile,
g++ FileName. cpp
Or
gcc FileName. cpp
For Run,
FileName. exe
This Is For Compile & Run Program.
Make sure, gcc compiler installed in PC or Laptop.
And also path variable must be set.
answered Feb 26, 2020 at 14:54
have MinGW compiler bin directory added to path.
use mingw32-g++ -s -c source_file_name.cpp -o output_file_name.o
to compile
then mingw32-g++ -o executable_file_name.exe output_file_name.o
to build exe
finally, you run with executable_file_name.exe
answered Feb 21, 2020 at 1:53
emma-eaemma-ea
1441 silver badge4 bronze badges
0
[Working 100%] from a Windows user.
Open the terminal(powershell) where your file.cpp
is created.
g++ file.cpp
//it will compile the file into a.exe.a.exe
//this will run the program.
answered Feb 7, 2022 at 11:01
There are few ways:
Using GNU Compiler Collection (GCC):
gcc -lstdc++ filename.cpp -o outputName
Using g++ command:
g++ -o outputName filename.cpp
Using clang++:
clang++ filename.cpp -o outputName
answered Jun 24, 2022 at 21:36
Yadab SdYadab Sd
5734 silver badges9 bronze badges
Компиляция программ при помощи текстового редактора на примере Notepad++
Цель: Научиться компилировать программы из командной строки. Научиться компилировать из текстового редактора Notepad++ (вернее научиться писать скрипты и связывать их), создавать скрипты и макросы, устанавливать системные переменные.
Сам текстовый редактор ничего не компилирует и не запускает. Также как и IDE не компилирует. Компиляция происходит с помощью компилятора. Выполнение производится некоторой средой выполнения. Это может быть интерпретатор команд или среда выполнения.
При компиляции программы на C# упаковываются в сборки. Код на языке IL автоматически преобразуется в код для конкретного процессора. Что относится к java, то скомпилированные файлы .class выполняется виртуальной машиной Java. Файлы .java компилируются в бай-код, то есть некоторый промежуточный код. Компиляция в exe файл тоже производится компилятором.
.EXE (сокр. англ. executable — исполнимый) — расширение исполняемых файлов, применяемое в операционных системах DOS, Windows, Symbian OS, OS/2 и в некоторых других, соответствующее ряду форматов. Процесс получения exe файла состоит из следующих этапов: препроцессинг, ассемблирование, компилирование, линковка.
ОUT файлы — исполняемые файлы для UNIX-подобных операционных систем.
Файл может хранить исполняемый код, общую динамическую библиотеку или объектный код.
Терминология
Cmd.exe — интерпретатор командной строки (англ. command line interpreter) для операционных систем OS/2, Windows CE и для семейства операционных систем, базирующихся на Windows NT (англ. Windows NT-based). cmd.exe является аналогом COMMAND.COM
Те́кстовый проце́ссор — компьютерная программа, используемая для написания и модификации документов, компоновки макета текста и предварительного просмотра документов в том виде, в котором они будут напечатаны (свойство, известное как WYSIWYG).
Текстовые процессоры, в отличие от текстовых редакторов, имеют больше возможностей для форматирования текста, внедрения в него графики, формул, таблиц и других объектов.
Скрипт (сценарий) — это отдельные последовательности действий, созданные для автоматического выполнения задачи.
Интерфе́йс по́льзователя, он же по́льзовательский интерфейс (UI — англ. user interface) — интерфейс, обеспечивающий передачу информации между пользователем-человеком и программно-аппаратными компонентами компьютерной системы (ISO/IEC/IEEE 24765-2010).
GUI означает graphical user interface, графический интерфейс пользователя.
GUI состоит из одного или нескольких окон и каждое окно содержит один или несколько элементов управления.
SDK (от англ. software development kit) — набор средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ.
IDE (Integrated Development Environment) — интегрированная среда разработки программного обеспечения.
Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.
Переменные среды́ Windows делятся на две категории:
Переменные среды́ пользователя — указывают путь до пользовательских каталогов.
Системные переменные — хранят данные о некоторых каталогах операционной системы и конфигурации компьютера.
Предпосылки
Для сборки проектов, в настоящее время часто используется командная строка.
Как это упрощает сборку? Дело в том, что вы можете создать командный файл с параметрами компилятора, с параметрами логирования, с параметрами получения ошибок и многими другими параметрами, которые будут автоматизировать вашу сборку. Плюсы такого подхода очевидны:
у вас не тратится время на загрузку тяжелой IDE, вы можете автоматизировать многие детали вашей сборки. Из командной строки могут быть доступны аргументы программы, которые недоступны из GUI. У GUI обычно меньше возможностей, потому как не все команды и аргументы будут предоставлены пользователю. Вы можете записать ваш скрипт(набор команд, логику и переменные) в отдельный файл и запускать при надобности.
К тому же такой подход даст вам более глубокое изучение и понимание того, что происходит во время выполнения. Вы сможете рассмотреть каждый шаг отдельно. Другой аспект, использование блокнота для компиляции, предоставляет вам возможность отлаживать и запускать небольшие куски кода без использования вашей тяжелой IDE. У вас в нужный момент может не оказаться установленной IDE и отсутсвовать подключение к интернет. В принципе вы можете использовать другой текстовый редактор, не Notepad++. Основная идея остается та же. В этой статье я опишу использование cmd Windows 10, Notepad++ и плагина NppExec. В предыдущих версиях Windows это тоже работает. Могут быть незначительные отличия. В данном вопросе вы можете разобраться самостоятельно.
Заметьте, это не призыв отказаться от удобных средств IDE. Хорошие, удобные IDE повышают производительность команды разработчиков. К сожалению, по тем или иным причинам не всегда существует возможность их использовать.
Скачать программы вы можете с официальных сайтов:
Notepad++: notepad-plus-plus.org
Исходники релизов программы: github.com/notepad-plus-plus/notepad-plus-plus/releases
Автор программы: Don HO, Senior Software Engineer
Биография Резюме автора: donho.github.io
Автор плагина: Vitaliy Dovgan
Помощь: Don HO, Jens Lorenz, Juha Nieminen,Joel Yulilouma
Новую версию NppExec вы можете скачать с сайта.
Новые версии Notepad++ поддерживают установку плагинов из репозиториев. Вам достаточно нажать в меню плагины/управление плагинами, в строке поиск набрать NppExec, отметить галочку и нажать кнопку установить. Если же вы пользуетесь более ранней версией npp, то вам следует скачать плагин и распаковать в папку plugins. Обычно она находится по пути …Notepad++plugins.
Версии NppExec: Unicode и ANSI
Разработчик рекомендует использовать Unicode версию.
Узнать версию NppExec: ПлагиныNppExecHelp/About
Вначале рассмотрим компиляцию из командной строки.
Программа cmd в Windows находится по следующему пути:
%windir%system32cmd.exe
Выполнить программу можно нажав поиск cmd и нажав на приложение «командная строка» либо из меню «выполнить», набрав cmd.
Настройки консоли cmd
В левом верхнем углу нажмите на значке консоли и выберите «свойства» для изменения текущих свойств. Вы можете поменять ряд свойств консоли: цвет, шрифт, расположение.
Для изменения свойств по умолчанию выберите «значения по умолчанию».
Вы можете назначить горячие клавиши для вызова командной строки.
Для этого наберите в поиске cmd, щелкните на «Командная строка» правой кнопкой и выберите «перейти к расположению файла. Затем, правой кнопкой на расположении и свойства. Установите курсор в поле «Быстрый вызов» и нажмите на клавиатуре сочетание клавиш, например: Ctrl+Alt+T. Такое сочетание клавиш соответствует вызову терминала Linux Ubuntu и вам не нужно будет заучивать новое. Если хотите, можете задать свое сочетание клавиш. cmd будет вызываться от имени пользователя. Чтобы запустить cmd от имени администратора, нужно набрать cmd в поиске, щелкнуть на нем правой кнопкой мышки и выбрать «Запуск от имени администратора».
cmd.exe — файл, это часть системы, командный интерпретатор системы Windows.
Командный интерпретатор, интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.
Ключи запуска cmd.exe:
/c исполняет команду, заданную строкой, и завершает работу приложения;
/k исполняет команду, заданную строкой, и продолжает работу приложения;
/a — устанавливает вывод в стандарте ANSI;
/u — устанавливает вывод в Юникоде;
/? — вывод справки в командной строке;
Для компиляции из командной строки, вам нужно знать минимальных набор команд.
Для более глубокого изучения вам, скорее всего, понадобятся такие понятия как:
Processes, Threads, Streams, Fibers, семафоры, мьютексы и так далее. Всё то, что связанно с многопоточностью и многозадачностью.
В этой небольшой статье, пока что, таких глубоких знаний не требуется.
Немного о переменных
Вы можете использовать переменные, которые относятся к переменным среды пользователя, к переменным cmd, к переменным программы Notepad++, к переменным плагина NppExec.
Aliases — в общем случае это псевдонимы переменных. Они могут быть использованы для задания короткого имени переменной в определенной области видимости.
В нашем контексте слово «команда» означает команда или программа. Получить список команд вы можете набрав в командной строке «help» без кавычек. Отобразится список команд с их описанием. Получить помощь по определенной команде, вы можете набрав «help имя_команды».
Компиляция программ java из командной строки
Для компиляции программ java, у вас на компьютере должна быть установлена jdk.
«Java Development Kit (сокращенно JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac)». JDK включает стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки. Скачать её вы можете с сайта Oracle, либо выбрать OpenJDK. Существуют комплекты разработки приложений на Java других производителей, доступные для ряда платформ. Ссылка для скачивания jdk: jdk.java.net/archive
Вот несколько существующих на сегодняшний день jdk: Oracle JDK, OpenJDK by Oracle, AdoptOpenJDK, Red Hat OpenJDK, Azul Zulu, Amazon Corretto. Скачиваете и устанавливаете, в документации об установке всё подробно расписано. Если же вы уже используете IDE — интегрированную среду разработки с уже установленной JDK, то вам остается только найти её на вашем диске. Среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика. Для компиляции и выполнения, вам потребуются файлы: javac.exe — для компиляции и java.exe — для выполнения программы. Заметьте jdk должна быть установлена, потому как при компиляции и выполнении используются ряд файлов ресурсов, таких как библиотеки классов, отладчик и другие ресурсы.
Компиляция из командной строки в упрощенном виде выглядит так:
javac HelloWorld.java
. Почему в упрощенном? Потому как мы не задаем полный путь к компилятору, полный путь к файлу, не указываем другие параметры, такие как имя выходного файла и другие.
Если вы просто выполните такую команду, предварительно ничего не настроив, то скорее всего вы получите ошибку: «javac не является внутренней или внешней командой, исполняемой программой или пакетным файлом». То есть ваша система «не знает» где находится javac и нам нужно явно указать где находится компилятор.
Об установке java читайте в официальной документации.
Где установлена java, вы можете узнать набрав команду в консоли:
where java
Пишем новую строчку:
c:путь_к_файлу_javacjavac HelloWorld.java
с:папка_на_диске_перваяпапка_на_диске_вторая...javac HelloWorld.java
Здесь папка_на_диске_первая, папка_на_диске_вторая — это название ваших папок на диске.
То есть это полный путь до файла javac.
Скорее всего вы получите следующую ошибку:
javac: file not found: hello.java
Usage: javac <options> <source files>
use -help for a list of possible options
В этом случае javac сообщает нам, что нет такого файла hello.java и предлагает ознакомиться с опциями компилятора.
Мы можем решить эту проблему двумя путями. Перейти в каталог в терминале.
cd полный_путь_к_нашему_java_файлу
Либо указать полный путь при компиляции.
с:папка_на_диске_перваяпапка_на_диске_вторая...javac с:путьHelloWorld.java
Здесь следует сделать уточнение, в данном случае я рассматриваю путь в системах Windows.
В других системах пути прописываются по другому. Более подробно смотрите документацию.
В случае успешной компиляции у вас в каталоге появится файл HelloWorld.class
Выполнить этот файл мы можем командой:
с:папка_на_диске_перваяпапка_на_диске_вторая...java -classpath . HelloWorld
В данном случае точка означает текущий пакет, текущий каталог.
В случае не указания -classpath, возможен вывод ошибки:
«Error: Could not find or load main class имя»
Если вы указываете в классе пакет, то вам при запуске скомпилированного файла нужно указать путь к пакету.
Мы с вами немного разобрались, как компилировать и запускать java программы из командной строки. Теперь нам нужно сделать тоже самое в Notepad++ при помощи плагина NppExec. Скачиваем и устанавливаем плагин, если он у нас еще не установлен и устанавливаем.
После правильной установки, плагин NppExec появится в меню «Плагины».
NppExec имеет свою собственную консоль наподобие CMD.
По умолчанию приглашение на ввод команд не отображается. Для показаскрытия консоли выберите: ПлагиныNppExecShow console.
Для получения справки наберите в консоли help и нажмите Enter. Для получения более подробной информации об NppExec наберите в консоли: help npp_exec.
Из help:
Так что, вообще говоря, NppExec — это инструмент. Этот инструмент делает именно то, что вы говорите, без каких-либо предположений, без неявного вызова чего-либо и так далее.
Это может быть критичто при разработке, когда «родная», «умная» консоль о чем-то «догадывается», к примеру в какой системе она запущена и может подставлять свои «умные» значения.
Do _not_ use NPP_EXEC to start a batch file or an executable file in NppExec!
Не используйте команду npp_exec для старта exe файла или bat файла.
Цель NPP_EXEC — выполнить собственный скрипт.
Для старта стороннего приложения напечатайте:
application.exe // в этом случае exe файл с именем application.exe
batchfile.bat // в этом случае batch с именем«batchfile.bat»
Нам остается только создать настройки для компиляции и выполнения. Мы сделаем эти настройки отдельно. Создадим настройки «для компиляции» и создадим настройки «для компиляции и выполнения».
Настройка системных переменных
Для того чтобы не вводить каждый раз полный путь к программе, будь то компилятор,
компоновщик, система сборки и т.д., вы можете установить системные переменные.
Как задаются системные переменные? Вы можете задать их в графическом интерфейсе, из cmd, используя Power Shell, используя regedit.
Как задать системные переменные используя графический интерфейс
Свойства компьютераДополнительноПеременные средыПеременные среды пользователя для «имя пользователя». Здесь вы можете создать, либо отредактировать имеющуюся переменную среды.
Как задать переменную среды используя командную строку
Для задания переменных окружения, вам нужно иметь права администратора.
сmd
SET
— вывод текущих установленных переменных системного окружения. Команда выводит не полный список.
Другие переменные принимают свои значения динамически:
%CD% — принимает значение текущего каталога.
%DATE% — принимает значение текущей даты.
%TIME% — принимает значение текущего времени.
%RANDOM% — значение случайного числа в диапазоне между 0 и 32767.
%ERRORLEVEL% — текущее значение ERRORLEVEL, специальной переменной, которая используется в качестве признака результата выполнения программы.
%CMDEXTVERSION% значение версии расширенной обработки команд CMD.EXE.
%CMDCMDLINE% — раскрывается в исходную командную строку, которая вызвала командный процессор.
SET переменная=строка
переменная — Имя переменной среды.
строка — Строка символов, присваиваемая указанной переменной.
set имя_переменной
— Показывает текущее значение переменной с именем имя_переменной.
echo %имя_переменной%
— Выводит значение переменной.
Переменные, задаваемые командой set, действуют лишь на протяжении командной сессии, в которой они были заданы. То есть переменные будут действительны до прекращения сессии текущего пользователя либо до перезагрузки.
Для того чтобы переменные работали после перезагрузки, вам нужно добавить их в системный реестр (В случае использования систем линейки Windows). Они могут быть добавлены средствами GUI Windows:
Выберите Run или Выполнить(Клавиша Win+R)
control sysdm.cpl
У вас отобразится окно свойств системы. Выберите «дополнительно» и «переменные среды».
Здесь есть два вида переменных среды. Это системные переменные и переменные среды пользователя. Переменные среды пользователя относятся к определенному пользователю системы и его системному окружению. Здесь вы можете задать переменную Path для быстрого доступа к часто используемым программам. Значение переменной представляет из себя строку.
Это набор путей разделенных символом «;».
Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы. Переменные среды́ устанавливаются пользователем или сценариями оболочки.
Вы также можете сделать это с помощью утилиты командной строки для работы с реестром Windows — reg.
reg /?
— получение справки по данной утилите.
REG ADD <имя_раздела> [/v <имя_параметра> | /ve] [/t <тип>] [/s <разделитель>]
[/d <данные>] [/f]
[/reg:32 | /reg:64]
Пример использования скрипта для добавления системной переменой:
SET KEY=полный_путь_к_разделу_рееестра
SET PARM=имя_параметра
Эти переменные сохраняются до окончания текущей командной сессии либо до изменения значения в текущей сессии.
Чтобы добавить переменную path для текущего пользователя(текущий пользователь — пользователь имя которого вы использовали при входе в сеанс):
Устанавливаем значения переменных и используем их в команде
REG ADD ...
Значение Path указываем пути через точку с запятой.
SET KEY=HKEY_CURRENT_USEREnvironment
SET PARAM=%systemdrive%путь;d:;
REG ADD %KEY% /v Path /d %PARAM%
Нам нужно указать в значении PARAM все пути, которые у нас были уже установлены и путь к компилятору.
HKEY_CURRENT_USER — это ветка текущего пользователя в реестре.
Environment — здесь хранятся переменные среды.
Предупреждение: «Так вы работаете с системным реестром. Обязательно сделайте копию реестра и создайте контрольную точку восстановления вашей системы». Безопаснее будет устанавливать системные переменные и переменные среды пользователя штатными средствами.
Обязательно ознакомьтесь с материалами:
Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7, Windows 8.1, Windows 10 (Официальная поддержка Microsoft):
support.microsoft.com/ru-ru/help/322756
Создание точки восстановления системы
Применимо к: Windows 10
support.microsoft.com/ru-ru/help/4027538/windows-create-a-system-restore-point
mrt
— запуск средства удаления вредоносных программ Malicious Software Removal Tool
Настройки NppExec в Notepad++
Открываем Nonepad++.
Нам нужно создать скрипты cmd.
Выбираем ПлагиныNppExec
Отключяем «Console Command History»;
Включаем «Save all files on execute»;
Включаем «Follow $(CURRENT_DIRECTORY)»
Выбираем ПлагиныNppExecExecute или нажимаем F6.
В открывшемся окне пишем:
cd "$(CURRENT_DIRECTORY)"
javac $(FILE_NAME)
Нажимаем Save… и в поле ScriptNme пишем: CompileJava.
Данный скрипт будет выполнять наш код java.
Снова выбираем ПлагиныNppExecExecete или нажимаем F6.
cd "$(CURRENT_DIRECTORY)"
java $(NAME_PART)
Нажимаем Save… и пишем имя «RunJava». Данный код, написанный выше, будет компилировать код Java.
Повторяем тоже самое и пишем (Для компиляции и выполнения):
cd "$(CURRENT_DIRECTORY)"
javac $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
java $(NAME_PART)
:exit
Сохраняем как CompileAndRunJava.
Нажмем кнопку «ОК».
cd "$(CURRENT_DIRECTORY)"
— перейти в текущую папку. В данном случае текущей будет та папка, куда вы сохранили текстовый файл.
javac $(FILE_NAME)
— компилировать файл с именем находящимся в переменной FILE_NAME.
В нашем случае это имя сохраненного файла. Далее следует условие.
if $(EXITCODE) !=0 goto exit
— если наш код не возвратил нормальное завершение == 0, то выйти.
java $(NAME_PART)
— выполнить наш скомпилированный файл.
Далее мы свяжем наши скрипты с макросами.
В Notepad++ выбираем Плагины (Plugins) NppExec Advanced options…
Ставим галочку напротив «Place to the Macros submenu». В раскрывающемся списке «Associated script:» выбираем нужный нам скрипт и даем ему имя в поле «Item Name». И нажимаем Add/Modify. Проделываем это для всех наших скриптов, нажимаем «Ок» и перезапускаем Notepad.
Решение проблем с неправильным выводом русских букв в консоли:
Плагины (Plugins)/ NppExec / Console Output
Ставим нужные нам кодировки ввода и вывода.
Отключение сообщений внутренней консоли: Плагины (Plugins) / NppExec / No internal messages.
В случае появления сообщение при выполнении файла ИмяНашегоКласса.class, о том что main не найден, просто меняем наш скрипт: То есть нам нужно указать либо полный путь к пакету либо указать текущий пакет символом «.».
У нас получится такой скрипт:
cd "$(CURRENT_DIRECTORY)"
java . $(NAME_PART)
Если же cmd не находит файла javа, то указываем к нему полный путь.
ИмяДиска:папка1папка2…java. $(NAME_PART).
Слегка улучшим наш код:
npp_save
cd "$(CURRENT_DIRECTORY)"
путь_к_javacjavac $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
путь_к_javajava . $(NAME_PART)
:exit
Скрипт компиляции Perl:
npp_save
CD $(CURRENT_DIRECTORY)
perl.exe -c -w "$(FILE_NAME)"
Объяснение скрипта:
npp_save — внутренняя команда npp, сохранить
CD $(CURRENT_DIRECTORY) — переход к текущей папке
perl.exe -c -w «$(FILE_NAME)» выполнение perl.exe -c -w
пример: perl.exe -c -w test.pl
-c означает compile, компилировать
-w означает warnings, выводить предупреждения
Скрипт для компиляции с#:
cd "$(CURRENT_DIRECTORY)"
Путь_к_csccsc $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
$(NAME_PART)
:exit
Здесь Путь_к_csc — это путь к вашему csc.exe
Обычно он выглядит так: %systemdrive%WindowsMicrosoft.NETFramework64версия
Для 32-битной версии — Framework32. Вы можете не указывать полный путь, а добавить путь к вашей системной переменной.
Есть такая особенность cmd, когда вы меняете путь и указываете другой диск, то вы можете увидеть тот же самый путь. Кажется что ничего не происходит при выполнении команды:
CD другой_диск:папка1папка2
.
Для смены диска вам нужно применять CD c ключем /D или явным образом указывать имя_диска: после ввода команды.
Пример 1:
cd e:папка1папка2
e:
Пример 2:
cd /D e:папка1папка2
здесь е — имя диска, которое отличается от текущего.
Методика выявления ошибок компиляции
У вас на этапе подготовки могут возникать различного рода ошибки и первое что вам нужно выяснить — это к чему относится ваша ошибка. То есть локализировать проблему. Для этого выясняем на каком уровне возникает проблема. Относится ли она к системе, к командной оболочке, к компилятору, текстовому редактору или к опечатке, ошибке в скрипте.
- Проверить запускается ли cmd и отрабатывают ли простейшие команды.
- Проверить ваш компилятор на предмет компиляции из командной строки.
- Проверить системные переменные
- Проверить установлен ли плагин NppExec
- Запускает ли он скрипты
- Связанны ли скрипты с макросами NppExec.
- Отрабатывают ли макросы совместно со скриптами.
Для более подробного вывода ошибок при компиляции смотрите документацию к вашей системе сборки, к компилятору и другим модулям, которые вы используете.
Теперь, когда мы создали, отладили и наши скрипты, убедились, что они работают предсказуемо, создали макросы для них, мы можем связать их с клавишами быстрого вызова. Как это сделать?
Мы не назначили горячие клавиши при создании скриптов, потому как назначение их, клавиш быстрого вызова, в окне создания скрипта ограничены.
Нам не предоставляется большого выбора из сочетаний клавиш на клавиатуре. К тому-же данные комбинации клавиш у нас могут быть заняты. Сделать назначение горячих клавиш или клавиш быстрого вызова мы можем в меню: Максросы/Измен.соч.клав./Удалить макро.
Какие у вас могут быть резоны познакомиться с командной строкой?
Вам может быть не придется использовать её часто. Но знать о её существовании просто необходимо. Например, на начальном этапе обучения вам нужно познакомиться с опциями компилятора, компоновщика, системы сборки и протестировать их. Вам понадобятся знание того, какие аргументы и ключи принимает программа на входе и что она может возвращать.
Не всегда у вас будет возможность использовать умные и дорогие IDE. И не потому что они могут оказаться слишком дороги, а по той причине, что вы просто не сможете установить их на некоторые системы. В других системах этого могут требовать меры безопасности. Вам может понадобится протестировать каждый модуль, такой как компилятор, линковщик, компановщик, систему сборки, систему контроля версий отдельно. То есть каждую часть вашей системы разработки. Вам может понадобится проверить корректность их работы по отдельности. В некоторых случаях вам может понадобится использовать другой компилятор с вашей IDE или любой другой отдельный модуль. Собирание кубиков графического интерфейса в IDE не делает из вас программиста. Вам понадобятся знания языков, знания архитектуры, знание некоторых скриптов, математические знания и т.д, то есть умение использовать в работе многих инструментов. В различных терминалах и консолях командная строка работает по разному. Это зависит от вашей консоли или терминала. Общие принципы работы для некоторых схожи, но для некоторых могут отличаться очень сильно. Командная строка — это только дополнительный инструмент в ваших руках, а насколько вы его эффективно использовать зависит от вас. В случае, когда вы занимаетесь opensource проектом, вы сможете предоставить командные файлы вашим пользователям для сборки, для тестирования проекта, развертывания проекта и тд. Для команды разработчиков такой подход может помочь более эффективно взаимодействовать. При этом это может оказаться выходом за пределы «комфорта» и нести дополнительные риски. Но использование любых инструментов несет в себе риски, во многом это определяется надежностью инструментов и умением их использовать.
В чем преимущество такого подхода к компиляции? Для обучающихся это приобретение новых навыков работы с командной строкой и связывание кода скриптов с текстовым редактором, изучение компиляции из командной строки. Экономия времени на тестировании небольшого кода без загрузки тяжелых IDE. В некоторых случаях, когда нет возможности установить полноценную IDE такой подход может выручить. Изучение скриптов для командной строки позволяет компилировать из исходников там где вообще нет никакой возможности применять UI, например на серверах. И хотя там не будет возможности использовать текстовые редакторы типа Notepad++, будет возможность использовать текстовые процессоры типа vi, vim, emacs, nano и тд. Основные принципы работы остаются теми же.
Мы с вами, несколько обзорно, познакомились с компиляцией из командной строки, с написанием скриптов для этого, с заданием и использованием системных переменных,
со связыванием кода скриптов с макросами Notepad++, c внутренними переменными Notepad++. Надеюсь данная статья будет полезна обучающимся. Здесь я описал подробно общие методики. Прежде чем обращаться в службу поддержки или отправлять баги, вам следует самостоятельно все выяснить. Во многих случаях может оказаться, что это ваша ошибка или опечатка, а не инженеров разработчиков.
Современные IDE имеют собственные консоли или эмуляторы консолей. Так что вам не обязательно использовать cmd для сборки. К тому же кроме cmd существует достаточно много подобных инструментов. Изучение работы скриптов может помочь вам в будущем в освоении таких инструментов, как системы сборки, компиляторов, компоновщиков, линковщиков. К тому же некоторые SDK не предоставляют графического пользовательского интереса(GUI), использование GUI может быть запрещено политикой безопасности, так как несет дополнительные угрозы в критических для этого областях применения.
Надеюсь данная публикация будет полезной в освоении, расширении новых знаний и навыков.
<<< Мои публикации на Habr >>>
Полезные ссылки
Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7, Windows 8.1, Windows 10 (Официальная поддержка Microsoft):
support.microsoft.com/ru-ru/help/322756
Материалы для дополнительного изучения
notepad-plus-plus.org
Управление Java classpath (UNIX и Mac OS X)
Управление Java classpath (Windows)
Java — the Java application launcher
Для ознакомления:
Избавляемся от «исторических причин» в cmd.exe
habr.com/ru/post/260991
Сравнение командных оболочек
ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%B5%D0%BA
Загрузить PDF
Загрузить PDF
В этой статье рассказывается, как скомпилировать программу из исходного кода на языке C с помощью компилятора GNU Compiler (GCC) для Linux или Minimalist Gnu (MinGW) для Windows.
-
1
В Unix-системе откройте терминал.
-
2
Введите gcc --version и нажмите ↵ Enter. Отобразится версия компилятора C. Если команда не сработала, скорее всего, GCC не установлен.[1]
- Если компилятор не установлен, почитайте документацию к своему дистрибутиву Linux, чтобы узнать, как скачать соответствующий пакет.
- Если вы компилируете программу, написанную на языке C++, вместо «gcc» введите «g++».
-
3
Перейдите в каталог, в котором хранится исходный код.
- Например, если файл с исходным кодом «main.c» находится в каталоге /usr/wikiHow/source, введите cd /usr/wikiHow/source.
-
4
Введите gcc main.c -o HelloWorld. Замените «main.c» на имя файла с исходным кодом, а «HelloWorld» замените на имя конечной программы. Программа будет скомпилирована.
- Если на экране появились сообщения об ошибках, введите gcc -Wall -o errorlog file1.c, чтобы получить дополнительную информацию. Затем в текущем каталоге откройте файл «errorlog»; для этого введите cat errorlog.
- Чтобы скомпилировать одну программу из нескольких файлов с исходным кодом, введите gcc -o outputfile file1.c file2.c file3.c.
- Чтобы скомпилировать сразу несколько программ из нескольких файлов с исходными кодами, введите gcc -c file1.c file2.c file3.c.
-
5
Запустите скомпилированную программу. Введите &# 46;/HelloWorld, где «HelloWorld» замените именем программы.
Реклама
-
1
Скачайте Minimalist GNU для Windows (MinGW). Эту версию GCC для Windows довольно легко установить. Установочный файл можно скачать на этом сайте.[2]
-
2
Запустите установочный файл MinGW.
- Если файл не запустился автоматически, дважды щелкните по нему в папке для загрузок, а затем нажмите «Установить».
-
3
Задайте параметры установки и нажмите Continue (Далее).
- Рекомендуем установить MinGW в папку по умолчанию, а именно в (C:MinGW). Если нужно поменять папку, не выбирайте папку, в названии которой присутствуют пробелы, такую как «Program Files».[3]
- Рекомендуем установить MinGW в папку по умолчанию, а именно в (C:MinGW). Если нужно поменять папку, не выбирайте папку, в названии которой присутствуют пробелы, такую как «Program Files».[3]
-
4
Выберите компиляторы, которые нужно установить.
- На левой панели рекомендуем нажать «Basic Setup» (Обычная установка). Затем на правой панели поставьте флажки рядом со всеми перечисленными компиляторами.
- Более опытные пользователи могут выбрать опцию «All packages» (Все пакеты) и отметить дополнительные компиляторы.
-
5
Откройте меню Installation (Установка). Оно находится в верхнем левом углу MinGW.
-
6
Нажмите Apply Changes (Применить изменения).
-
7
Нажмите Apply (Применить). Компиляторы будут загружены и установлены.
-
8
В путь к MinGW вставьте системные переменные среды. Сделайте следующее:
- Нажмите ⊞ Win+S, чтобы открыть строку поиска, и введите среда.
- В результатах поиска щелкните по «Изменение системных переменных среды».
- Нажмите «Переменные среды».
- Нажмите «Изменить» (под «Пользовательские переменные»).
- Прокрутите вниз информацию в поле «Значение переменной».
- Непосредственно под последней записью введите ;C:MinGWbin. Обратите внимание, что если вы установили MinGW в другую папку, введите ;C:путь-к-папкеbin.
- Дважды нажмите «OK». Еще раз нажмите «OK», чтобы закрыть окно.
-
9
Откройте командную строку в качестве администратора. Для этого:
- Нажмите ⊞ Win+S и введите строка.
- В результатах поиска щелкните правой кнопкой мыши по «Командная строка» и в меню выберите «Запуск от имени администратора».
- Нажмите «Да», чтобы разрешить внесение изменений.
-
10
Перейдите в папку, в которой хранится файл с исходным кодом.
- Например, если файл с исходным кодом «helloworld.c» находится в папке C:SourcePrograms, введите cd C:SourcePrograms.
-
11
Введите gcc helloworld.c -o helloworld.exe. Замените «helloworld» на имя файла с исходным кодом и имя программы. По завершении компиляции программы вы вернетесь в командную строку, при этом не будет никаких сообщений об ошибках.[4]
- Любые ошибки программирования должны быть устранены перед компиляцией программы.
-
12
Чтобы запустить программу, введите ее имя. Если программа называется helloworld.exe, введите это имя, чтобы запустить программу.
Реклама
Советы
- Компиляция кода с помощью флага -g приведет к созданию отладочной информации, которая может быть использована соответствующим отладчиком, например, GDB.
- Создайте сборочный файл проекта (make-файл), чтобы упростить компиляцию больших программ.
- Если вы активно используете оптимизацию, помните, что оптимизация по скорости может привести к снижению размера и, иногда, качества (и наоборот).
- При компиляции программы на языке C++ используйте G++ так же, как вы используете GCC. Помните, что файлы с исходным кодом на языке C++ имеют расширение .cpp, а не .c.
Реклама
Что вам понадобится
- Компьютер под управлением Linux или Windows
- Базовые знания GNU/Linux и знание того, как устанавливать приложения
- Программный код
- Текстовый редактор (например, Emacs)
Об этой статье
Эту страницу просматривали 72 864 раза.
Была ли эта статья полезной?
Я знаю, что сейчас все используют IDE, но мне проще написать код в блокноте ++, скомпилировать его с помощью команды командной строки и запустить оттуда. По крайней мере, это работает для Java и Python. Я пытался понять, как это сделать с помощью C ++, и не смог найти ничего хорошего. Есть ли какой-нибудь компилятор (например, Java JDK), который я могу вставить в свой путь и использовать эквивалент C ++ для javac и java для запуска и компиляции моего кода из CMD?
Примечание: пожалуйста, не публикуйте ответы и комментарии о том, чем IDE лучше — я знаю, что это так. Просто привык по старинке: D
11 ответов
Это зависит от того, какой компилятор вы используете.
Например, если вы используете Visual C ++ .NET 2010 Express, запустите командную строку Visual C ++ 2010 Express из меню «Пуск», и вы можете просто скомпилировать и запустить код.
Или из обычной командной строки вы можете сначала запустить vcvars32.bat , чтобы настроить среду. В качестве альтернативы найдите setvcvars.cmd (часть проекта FLOSS) и используйте его, чтобы даже найти установленный VS и вызвать для вас vcvars32.bat .
См. Командные строки в руководстве к вашему компилятору.
Это то, что я использовал на MAC.
Используйте предпочитаемый вами компилятор.
Скомпилируйте с помощью gcc.
Или скомпилировать с помощью clang.
После компиляции. Вы можете запустить его с помощью.
Добавить в путь каталог bin компилятора MinGW.
Используйте mingw32-g++ -s -c source_file_name.cpp -o output_file_name.o для компиляции
Затем mingw32-g++ -o executable_file_name.exe output_file_name.o для сборки exe
Наконец, вы бежите с executable_file_name.exe
Откройте cmd и перейдите в каталог, где сохранен файл. Затем для компиляции g ++ FileName. cpp или gcc FileName. cpp
Для «Выполнить» укажите FileName. исполняемый
Это для программы компиляции и запуска.
Убедитесь, что компилятор gcc установлен на ПК или ноутбуке. Также должна быть установлена переменная пути.
Лучшая альтернатива MinGW — это bash для powershell. Вы можете установить bash для Windows 10, выполнив следующие действия: здесь
После того, как вы установили bash, все, что вам нужно сделать, это запустить команду bash на своем терминале.
- первая команда:
- Вторая команда:
- Загрузите форму MinGW: https://sourceforge.net/projects/mingw-w64/
- используйте блокнот ++ для написания исходного кода C ++.
- с помощью командной строки измените каталог / папку, в которой сохранен исходный код (с помощью блокнота ++)
- скомпилировать: g ++ имя_файла.cpp -o имя_файла.exe
- запустите исполняемый файл: file_name.exe
Я действительно не понимаю, в чем ваша проблема, вопрос довольно неконкретный. Учитывая Notepad ++, я предполагаю, что вы используете Windows.
Здесь у вас так много вариантов, от MinGW (с использованием цепочки инструментов GCC и GNU make ) до использования современного MSVC. Вы можете использовать WDK ( ddkbuild.bat/.cmd или простой build.exe ), Windows SDK ( nmake.exe ), другие инструменты, такие как premake и CMake или msbuild , который поставляется с MSVC и Windows SDK.
Я имею в виду, что имена компиляторов будут отличаться, cl.exe для MSVC и WDK и Windows SDK, gcc.exe для MinGW, но даже из консоли принято каким-то образом организовать свой проект. В конце концов, это то, для чего были изобретены make и его друзья.
Итак, чтобы узнать параметры командной строки вашего конкретного компилятора, обратитесь к руководству этого самого компилятора. Чтобы найти способы автоматизировать сборку (т.е. возможность запускать простую команду вместо сложной командной строки), вы можете просмотреть list в Википедии или выберите один из инструментов, упомянутых выше, и примените его.
Примечание: необязательно просить людей не упоминать IDE. Большинство профессиональных разработчиков автоматизировали свои сборки для запуска из командной строки, а не из среды IDE (как, например, во время цикла разработки), потому что у такого подхода очень много преимуществ.
Конечно, именно так начиналось большинство компиляторов. GCC, вероятно, самый популярный (поставляется с большинством разновидностей * nix). Синтаксис — это просто gcc my_source_code.cpp или gcc -o my_executable.exe my_source_code.cpp . Конечно, это усложняется, когда у вас есть несколько исходных файлов (как в реализации; все #include d работает автоматически, пока GCC может это найти).
MinGW, по-видимому, является версией GCC для Windows, если это то, что вы используете. Но я не пробовал.
Совершенно уверен, что большинство IDE также включают интерфейс командной строки. Я знаю, что Visual Studio умеет, но никогда не использовал.
Если вы используете Windows, воспользуйтесь этим:
g++ — это имя компилятора, а -o — это параметр, необходимый для создания файла .o . Программа (без суффикса .cpp ) — это файл exe , а program.cpp — ваш исходный файл, который вы хотите скомпилировать.
Используйте этот ярлык для запуска файла программы .exe . Это может работать в Linux, но вам, возможно, придется использовать суффикс .out вместо .exe . Используйте этот удобный пакетный скрипт для выполнения ваших программ в Windows:
Сохранить как cppExecutor.bat
Также вы можете использовать следующие команды в ОС Unix (Linux и Mac):
Если вы хотите использовать gcc :
С помощью ярлыка:
Шаги по выполнению задачи:
Сначала загрузите и установите компилятор.
Затем введите программу C / C ++ и сохраните ее.
Затем откройте командную строку и смените каталог на тот, в котором хранится исходный файл, используя cd следующим образом:
Компиляция исходников (cpp, cs) компилятором Visual Studio без запуска IDE в Windows
2) в разделе «Пути к Boost» можно задать BOOST_ROOT — путь к коревому каталогу библиотеки Boost (если она у вас установлена).
3) в разделе «Настройка путей к подключаемым файлам» при необходимости можно задать пути к заголовочным файлам Qt, WinDDK.
4) в разделе «Настройка путей к библиотечным (.lib) файлам» задаются пути к файлам библиотек (в частности для WinDDK).
Реже может возникнуть необходимость настроить следующие параметры под конкретный проект:
iCompVer — версия используемого компилятора (6 — для VC6, 8 — VC8 (2005), 9 — VC9, 10 — VC10 (2010), 11 — VC11 (2012).
gavLibFilesQtShared — имена .lib-файлов для динамически подключаемой библиотеки Qt;
gavLibFilesQtStatic — имена .lib-файлов для статически линкуемой библиотеки Qt.
gavLibFilesCrt — имена .lib-файлов для стандартных динамических библиотек, используемых в Windows.
iModeQt — режим линковки библиотеки Qt.
gavCompMode — флаги режима компиляции (однопоточные, многопоточные и т.п.).
gavOptimize — флаги оптимизации кода компилятором.
Чаще всего приходится менять параметры:
gavSrc — имена файлов с исходным кодом, разделённые пробелом (если их несколько).
bLibQt — флаг (0/1) необходимости использовать библиотеку Qt при сборке приложения.
bLibCrt — флаг (0/1) необходимости использовать стандартные CRT-библиотеки Windows при сборке приложения.
bLibBoost — флаг (0/1) необходимости использовать библиотеку Boost при сборке приложения.
gavSubsystem — подсистема создаваемого приложения: CONSOLE — консольное, WINDOWS — с графическим интерфейсом.
Запуск C++ в командной строке-Windows
Я знаю, что в настоящее время все используют IDE, но мне просто проще написать свой код в notepad++, скомпилировать его с помощью команды командной строки и запустить его оттуда. По крайней мере, это работает для Java и Python. Я пытался понять, как это сделать с C++, и не смог найти ничего хорошего. Есть ли компилятор (например, JDK Java), который я могу вставить в свой путь и использовать эквивалент c++ javac и java для запуска и компиляции моего кода из CMD?
Примечание: пожалуйста, не публикуйте ответы и комментарии о том, как IDEs лучше — я знаю, что они есть. Я просто привык делать это по-старому: D
5 ответов
Это зависит от того, какой компилятор вы используете.
например, если вы используете Visual C++ .NET 2010 Express, Запустите командную строку Visual C++ 2010 Express из меню Пуск, и вы можете просто скомпилировать и запустить код.
или из обычной командной строки, вы можете запустить vcvars32.bat сначала настройте среду. Как вариант искать setvcvars.cmd (часть проекта FLOSS) и используйте это, чтобы даже найти установленный VS и вызвать его vcvars32.bat для вы.
пожалуйста, проверьте руководство вашего компилятора для командной строки.
шаги для выполнения задачи:
Да, сначала установите компилятор: скачать здесь
затем введите программу C, сохраните ее.
затем откройте командную строку и измените каталог, используя » cd » в конкретный каталог, где хранится исходный файл.
как: cd C:Documents и настройки.
затем для компиляции/запуска тип в командная строка,
«sourcefile_name ССЗ.C «или» GCC-o outputfile.EXE-файл»
Я действительно не понимаю, в чем ваша проблема, вопрос довольно неопределенный. Учитывая Notepad++ я предполагаю, что вы используете Windows.
у вас так много вариантов здесь, из MinGW (используя цепочку инструментов GCC и GNU make ) для использования современного MSVC. Вы можете использовать WDK ( ddkbuild.bat/.cmd или обычный build.exe ), то Windows SDK ( nmake.exe ), другие инструменты, такие как premake и CMake или msbuild это поставляется с MSVC и Windows пакет SDK.
Я имею в виду, что имена компиляторов будут отличаться, cl.exe для MSVC и WDK и Windows SDK, gcc.exe для MinGW, но даже с консоли принято каким-то образом организовывать свой проект. Это make и друзья были изобретены в конце концов.
чтобы узнать параметры командной строки вашего конкретного компилятора, обратитесь к руководству этого самого компилятора. Чтобы найти способы автоматизации сборки (т. е. возможность запуска простой команды вместо сложной командная строка), вы можете просеять список в Википедии или выберите один из инструментов, о которых я упоминал выше, и идите с этим.
боковое Примечание: нет необходимости просить людей не упоминать Иды. Большинство профессиональных разработчиков автоматизировали свои сборки для запуска из командной строки, а не из среды IDE (например, во время цикла разработки), потому что у этого подхода так много преимуществ.
если вы используете windows, то используйте это:
g++ — это имя компилятора, а-o-команда для создания a .o файл. программа (без .cpp суффикс) является exe-файл и программа.ЧГК-это ваш файл, который вы хотите скомпилировать.
используйте этот ярлык для запуска .EXE-файл программы. Это может работать в Ubuntu, но вы можете использовать .вместо суффикса .исполняемый. Используйте этот удобный пакетный скрипт, который я сделал для выполнения ваших программ на windows:
сохраните его как cppExecutor.летучая мышь!—7—>
также вы можете использовать следующие команды в ОС unix (Linux и Mac):
если вы хотите использовать GCC:
конечно, так начиналось большинство компиляторов. GCC, вероятно, самый популярный (поставляется с большинством ароматов *nix). Синтаксис просто gcc my_source_code.cpp или gcc -o my_executable.exe my_source_code.cpp . Конечно, это становится сложнее, когда у вас есть несколько исходных файлов (как в реализации; что-нибудь #include d работает автоматически, пока GCC может найти его).
MinGW похоже, это версия GCC для Windows, если это то, что вы используете. Я не пробовала хотя.
довольно уверен, что большинство IDEs также включают интерфейс командной строки. Я знаю, что Visual Studio делает, хотя я никогда не использовал его.
Вступление
Программы, написанные на C ++, должны быть скомпилированы до их запуска. В зависимости от вашей операционной системы доступно большое количество компиляторов.
замечания
Компиляция с помощью GCC
Предполагая, что один исходный файл с именем main.cpp
, команда для компиляции и ссылки на не оптимизированный исполняемый файл выглядит следующим образом (компиляция без оптимизации полезна для начальной разработки и отладки, хотя -Og
официально рекомендуется для более новых версий GCC).
g++ -o app -Wall main.cpp -O0
Чтобы создать оптимизированный исполняемый файл для использования в производстве, используйте один из опций -O
(см .: -O1
, -O2
, -O3
, -Os
, -Ofast
):
g++ -o app -Wall -O2 main.cpp
Если опция -O опущена, -O0, что означает отсутствие оптимизаций, используется по умолчанию (указание -O без номера разрешается на -O1).
Альтернативно, используйте флаги оптимизации из групп O
(или более экспериментальных оптимизаций) напрямую. В следующем примере построена оптимизация -O2
плюс один флаг с уровня оптимизации -O3
:
g++ -o app -Wall -O2 -ftree-partial-pre main.cpp
Чтобы создать оптимизированный исполняемый файл для конкретной платформы (для использования на производстве с той же архитектурой), используйте:
g++ -o app -Wall -O2 -march=native main.cpp
Любой из вышеперечисленных файлов создаст двоичный файл, который можно запустить с .app.exe
в Windows и ./app
в Linux, Mac OS и т. Д.
Флаг -o
также может быть пропущен. В этом случае GCC создаст исполняемый файл a.exe
по умолчанию a.exe
Windows и a.out
в Unix-подобных системах. Чтобы скомпилировать файл без его связывания, используйте параметр -c
:
g++ -o file.o -Wall -c file.cpp
Это создает объектный файл с именем file.o
который впоследствии может быть связан с другими файлами для создания двоичного файла:
g++ -o app file.o otherfile.o
Подробнее о вариантах оптимизации можно узнать на gcc.gnu.org . Особо следует отметить -Og
(оптимизация с упором на опыт отладки — рекомендуется для стандартного цикла редактирования-компиляции-отладки) и -Ofast
(все оптимизации, включая те, которые не соответствуют строгому соблюдению стандартов).
Флаг -Wall
позволяет предупреждать многие распространенные ошибки и всегда должен использоваться. Для улучшения качества кода часто рекомендуется использовать -Wextra
и другие предупреждающие флаги, которые автоматически не активируются -Wall
и -Wextra
.
Если код ожидает определенный стандарт C ++, укажите, какой стандарт использовать, включая флаг -std=
. Поддерживаемые значения соответствуют году завершения для каждой версии стандарта ISO C ++. Начиная с GCC 6.1.0, допустимыми значениями для std=
flag являются c++98
/ c++03
, c++11
, c++14
и c++17
/ c++1z
. Значения, разделенные косой чертой, эквивалентны.
g++ -std=c++11 <file>
GCC включает некоторые расширения, специфичные для компилятора, которые отключены, когда они конфликтуют со стандартом, заданным флагом -std=
. Для компиляции с включенными всеми расширениями может использоваться значение gnu++XX
, где XX
— любой из лет, используемых значениями c++
перечисленными выше.
Стандарт по умолчанию будет использоваться, если ни один не указан. Для версий GCC до 6.1.0 по умолчанию используется значение -std=gnu++03
; в GCC 6.1.0 и выше по умолчанию используется -std=gnu++14
.
Обратите внимание, что из-за ошибок в GCC флаг -pthread
должен присутствовать при компиляции и связывании для GCC для поддержки стандартных функций потоковой -pthread
C ++, представленных с C ++ 11, таких как std::thread
и std::wait_for
. Опущение при использовании функций потоковой передачи может не приводить к появлению предупреждений, но недействительных результатов на некоторых платформах.
Связывание с библиотеками:
Используйте опцию -l
для передачи имени библиотеки:
g++ main.cpp -lpcre2-8
#pcre2-8 is the PCRE2 library for 8bit code units (UTF-8)
Если библиотека не находится в стандартном пути библиотеки, добавьте путь с параметром -L
:
g++ main.cpp -L/my/custom/path/ -lmylib
Несколько библиотек могут быть связаны между собой:
g++ main.cpp -lmylib1 -lmylib2 -lmylib3
Если одна библиотека зависит от другой, поместите зависимую библиотеку перед независимой библиотекой:
g++ main.cpp -lchild-lib -lbase-lib
Или дайте компоновщику определить само упорядочение через --start-group
и --end-group
(обратите внимание: это имеет значительную производительность):
g++ main.cpp -Wl,--start-group -lbase-lib -lchild-lib -Wl,--end-group
Компиляция с помощью Visual C ++ (командной строки)
Для программистов, поступающих из GCC или Clang в Visual Studio, или программистов, более удобных с командной строкой в целом, вы можете использовать компилятор Visual C ++ из командной строки, а также из среды IDE.
Если вы хотите скомпилировать свой код из командной строки в Visual Studio, сначала необходимо настроить среду командной строки. Это можно сделать, открыв Visual Studio Command Prompt
/ Developer Command Prompt
/ x86 Native Tools Command Prompt
/ x64 Native Tools Command Prompt
или аналогичная (как предоставляется вашей версией Visual Studio) или в командной строке, путем перехода к подкаталог VC
каталога установки компилятора (обычно Program Files (x86)Microsoft Visual Studio xVC
, где x
— номер версии (например, 10.0
для 2010 или 14.0
для 2015) и запуск командного файла VCVARSALL
с помощью параметр командной строки, указанный здесь .
Обратите внимание, что в отличие от GCC, Visual Studio не предоставляет интерфейс для компоновщика ( link.exe
) через компилятор ( cl.exe
), но вместо этого предоставляет компоновщик как отдельную программу, которую компилятор вызывает при выходе. cl.exe
и link.exe
могут использоваться отдельно с разными файлами и параметрами, иначе cl
может передаваться файлы и параметры для link
если обе задачи выполняются вместе. Любые параметры привязки, указанные для cl
будут переведены в параметры link
, и любые файлы, не обработанные cl
будут переданы непосредственно в link
. Поскольку это в основном простое руководство по компиляции с командной строкой Visual Studio, аргументы для link
не будут описаны в настоящее время; если вам нужен список, см. здесь .
Обратите внимание, что аргументы для cl
чувствительны к регистру, а аргументы для link
— нет.
[Следует иметь в виду, что в некоторых из следующих примеров при указании абсолютных имен пути используется переменная «текущий каталог» оболочки Windows, %cd%
. Для тех, кто не знаком с этой переменной, он расширяется до текущего рабочего каталога. Из командной строки это будет каталог, в котором вы были, когда вы запускаете cl
, и указывается в командной строке по умолчанию (если ваша командная строка — C:src>
, например, то %cd%
— C:src
).]
Предполагая, что в текущей папке имеется один исходный файл с именем main.cpp
, команда для компиляции и ссылки на неоптимизированный исполняемый файл (полезный для начальной разработки и отладки) является (используйте любой из следующих):
cl main.cpp
// Generates object file "main.obj".
// Performs linking with "main.obj".
// Generates executable "main.exe".
cl /Od main.cpp
// Same as above.
// "/Od" is the "Optimisation: disabled" option, and is the default when no /O is specified.
Предположим, что дополнительный файл-источник «niam.cpp» в том же каталоге использует следующее:
cl main.cpp niam.cpp
// Generates object files "main.obj" and "niam.obj".
// Performs linking with "main.obj" and "niam.obj".
// Generates executable "main.exe".
Вы также можете использовать подстановочные знаки, как и следовало ожидать:
cl main.cpp src*.cpp
// Generates object file "main.obj", plus one object file for each ".cpp" file in folder
// "%cd%src".
// Performs linking with "main.obj", and every additional object file generated.
// All object files will be in the current folder.
// Generates executable "main.exe".
Чтобы переименовать или переместить исполняемый файл, выполните одно из следующих действий:
cl /o name main.cpp
// Generates executable named "name.exe".
cl /o folder main.cpp
// Generates executable named "main.exe", in folder "%cd%folder".
cl /o foldername main.cpp
// Generates executable named "name.exe", in folder "%cd%folder".
cl /Fename main.cpp
// Same as "/o name".
cl /Fefolder main.cpp
// Same as "/o folder".
cl /Fefoldername main.cpp
// Same as "/o foldername".
Оба параметра /o
и /Fe
передают свой параметр (назовем его o-param
), чтобы link
как /OUT:o-param
, добавив соответствующее расширение (обычно .exe
или .dll
) в «имя» o-param
s по мере необходимости. Хотя оба /o
и /Fe
, насколько мне известно, идентичны по функциональности, последний предпочтительнее для Visual Studio. /o
отмечен как устаревший и, как представляется, в основном предоставляется программистам, более знакомым с GCC или Clang.
Обратите внимание, что, хотя пространство между /o
и указанной папкой и / или именем является необязательным, между /Fe
и указанным папок и / или именем не может быть пробела.
Аналогично, для создания оптимизированного исполняемого файла (для использования в производстве) используйте:
cl /O1 main.cpp
// Optimise for executable size. Produces small programs, at the possible expense of slower
// execution.
cl /O2 main.cpp
// Optimise for execution speed. Produces fast programs, at the possible expense of larger
// file size.
cl /GL main.cpp other.cpp
// Generates special object files used for whole-program optimisation, which allows CL to
// take every module (translation unit) into consideration during optimisation.
// Passes the option "/LTCG" (Link-Time Code Generation) to LINK, telling it to call CL during
// the linking phase to perform additional optimisations. If linking is not performed at this
// time, the generated object files should be linked with "/LTCG".
// Can be used with other CL optimisation options.
Наконец, чтобы создать оптимизированный исполняемый файл для конкретной платформы (для использования на производстве на машине с указанной архитектурой), выберите соответствующую командную строку или параметр VCVARSALL
для целевой платформы. link
должна обнаружить желаемую платформу из объектных файлов; если нет, используйте параметр /MACHINE
чтобы явно указать целевую платформу.
// If compiling for x64, and LINK doesn't automatically detect target platform:
cl main.cpp /link /machine:X64
Любое из вышеперечисленного даст исполняемый файл с именем, указанным /o
или /Fe
, или если ни один из них не указан, с именем, идентичным первому источнику или объекту, указанному компилятору.
cl a.cpp b.cpp c.cpp
// Generates "a.exe".
cl d.obj a.cpp q.cpp
// Generates "d.exe".
cl y.lib n.cpp o.obj
// Generates "n.exe".
cl /o yo zp.obj pz.cpp
// Generates "yo.exe".
Чтобы скомпилировать файл (ы) без ссылки, используйте:
cl /c main.cpp
// Generates object file "main.obj".
Это говорит cl
для выхода без вызова link
и создает объектный файл, который позже может быть связан с другими файлами для создания двоичного файла.
cl main.obj niam.cpp
// Generates object file "niam.obj".
// Performs linking with "main.obj" and "niam.obj".
// Generates executable "main.exe".
link main.obj niam.obj
// Performs linking with "main.obj" and "niam.obj".
// Generates executable "main.exe".
Существуют и другие важные параметры командной строки, которые было бы очень полезно для пользователей:
cl /EHsc main.cpp
// "/EHsc" specifies that only standard C++ ("synchronous") exceptions will be caught,
// and `extern "C"` functions will not throw exceptions.
// This is recommended when writing portable, platform-independent code.
cl /clr main.cpp
// "/clr" specifies that the code should be compiled to use the common language runtime,
// the .NET Framework's virtual machine.
// Enables the use of Microsoft's C++/CLI language in addition to standard ("native") C++,
// and creates an executable that requires .NET to run.
cl /Za main.cpp
// "/Za" specifies that Microsoft extensions should be disabled, and code should be
// compiled strictly according to ISO C++ specifications.
// This is recommended for guaranteeing portability.
cl /Zi main.cpp
// "/Zi" generates a program database (PDB) file for use when debugging a program, without
// affecting optimisation specifications, and passes the option "/DEBUG" to LINK.
cl /LD dll.cpp
// "/LD" tells CL to configure LINK to generate a DLL instead of an executable.
// LINK will output a DLL, in addition to an LIB and EXP file for use when linking.
// To use the DLL in other programs, pass its associated LIB to CL or LINK when compiling those
// programs.
cl main.cpp /link /LINKER_OPTION
// "/link" passes everything following it directly to LINK, without parsing it in any way.
// Replace "/LINKER_OPTION" with any desired LINK option(s).
Для тех, кто более знаком с системами * nix и / или GCC / Clang, cl
, link
и другими инструментами командной строки Visual Studio, могут принимать параметры, указанные с помощью дефиса (например, -c
), вместо косой черты (например, /c
). Кроме того, Windows распознает либо косую черту, либо обратную косую черту как допустимый разделитель путей, поэтому можно использовать также пути в стиле nix. Это упрощает преобразование простых команд компилятора из g++
или clang++
в cl
, или наоборот, с минимальными изменениями.
g++ -o app src/main.cpp
cl -o app src/main.cpp
Конечно, при переносе командных строк, которые используют более сложные параметры g++
или clang++
, вам нужно искать эквивалентные команды в применимых документах компилятора и / или на ресурсных сайтах, но это облегчает работу с минимальным временем обучения новые компиляторы.
Если вам нужны специальные языковые функции для вашего кода, требуется определенная версия MSVC. Из Visual C ++ 2015 Update 3 можно выбрать версию стандарта для компиляции с помощью флага /std
. Возможные значения: /std:c++14
и /std:c++latest
( /std:c++17
скоро появится).
Примечание. В более старых версиях этого компилятора были доступны специальные флаги функций, однако в основном это использовалось для предварительного просмотра новых функций.
Компиляция с помощью Visual Studio (графический интерфейс) — Hello World
- Загрузите и установите Visual Studio Community 2015
- Открыть сообщество Visual Studio
- Нажмите Файл -> Создать -> Проект
- Нажмите Шаблоны -> Visual C ++ -> Консольное приложение Win32, а затем назовите проект MyFirstProgram .
- Нажмите ОК.
- Нажмите «Далее» в следующем окне.
- Проверьте флажок «
Empty project
и нажмите «Готово»: - Щелкните правой кнопкой мыши папку Source Source затем -> Добавить -> Новый элемент:
- Выберите файл C ++ и назовите файл main.cpp, затем нажмите «Добавить»: 10: Скопируйте и вставьте следующий код в новый файл main.cpp:
#include <iostream>
int main()
{
std::cout << "Hello World!n";
return 0;
}
Вы должны выглядеть так:
- Нажмите «Отладка» -> «Старт без отладки» (или нажмите ctrl + F5):
- Готово. Вы должны получить следующий вывод консоли:
Компиляция с Clang
Поскольку front-end Clang предназначен для совместимости с GCC, большинство программ, которые могут быть скомпилированы через GCC, будут скомпилированы, когда вы замените g++
на clang++
в сценариях сборки. Если no -std=version
задана, будет использоваться gnu11.
Пользователи Windows, которые используются для MSVC, могут поменять cl.exe
на clang-cl.exe
. По умолчанию clang пытается быть совместимым с самой высокой версией MSVC, которая была установлена.
В случае компиляции с визуальной студией clang-cl можно использовать, изменив Platform toolset
в свойствах проекта.
В обоих случаях clang совместим только с его интерфейсом, хотя он также пытается генерировать двоичные файлы совместимых объектов. Пользователи clang-cl должны заметить, что совместимость с MSVC еще не завершена .
Чтобы использовать clang или clang-cl, можно использовать установку по умолчанию в некоторых дистрибутивах Linux или в комплекте с IDE (например, XCode на Mac). Для других версий этого компилятора или на платформах, для которых это не установлено, это можно загрузить с официальной страницы загрузки .
Если вы используете CMake для создания кода, вы обычно можете переключать компилятор, задав переменные окружения CC
и CXX
следующим образом:
mkdir build
cd build
CC=clang CXX=clang++ cmake ..
cmake --build .
См. Также введение в Cmake .
Компиляторы онлайн
Различные веб-сайты предоставляют онлайн-доступ к компиляторам C ++. Набор функций онлайн-компилятора значительно варьируется от сайта к сайту, но обычно они позволяют сделать следующее:
- Вставьте свой код в веб-форму в браузере.
- Выберите некоторые параметры компилятора и скомпилируйте код.
- Собирать компилятор и / или выпуск программы.
Онлайн-поведение веб-компилятора обычно является довольно ограничительным, поскольку они позволяют кому-либо запускать компиляторы и выполнять произвольный код на своей стороне сервера, тогда как обычно удаленное выполнение произвольного кода считается уязвимостью.
Компиляторы онлайн могут быть полезны для следующих целей:
- Запустите небольшой фрагмент кода с компьютера, на котором отсутствует компилятор C ++ (смартфоны, планшеты и т. Д.).
- Убедитесь, что код успешно компилируется с разными компиляторами и работает одинаково, независимо от компилятора, с которым он был скомпилирован.
- Изучайте или преподавайте основы C ++.
- Изучите современные возможности C ++ (C ++ 14 и C ++ 17 в ближайшем будущем), когда современный компилятор C ++ недоступен на локальной машине.
- Найдите ошибку в своем компиляторе по сравнению с большим набором других компиляторов. Проверьте, исправлена ли ошибка компилятора в будущих версиях, которые недоступны на вашем компьютере.
- Решите проблемы онлайн-судьи.
Какие онлайн-компиляторы не должны использоваться для:
- Разработка полнофункциональных (даже небольших) приложений с использованием C ++. Обычно онлайн-компиляторы не позволяют связываться со сторонними библиотеками или загружать артефакты сборки.
- Выполнять интенсивные вычисления. Ресурсы на стороне Sever ограничены, поэтому любая пользовательская программа будет убита через несколько секунд после ее выполнения. Допустимое время выполнения обычно достаточно для тестирования и обучения.
- Сам сервер компилятора атаки или сторонние хосты в сети.
Примеры:
Отказ от ответственности: автор (ы) документации не связаны ни с какими ресурсами, перечисленными ниже. Веб-сайты перечислены в алфавитном порядке.
- http://codepad.org/ Онлайн-компилятор с совместным использованием кода. Редактирование кода после компиляции с предупреждением или ошибкой исходного кода работает не так хорошо.
- http://coliru.stacked-crooked.com/ Онлайн-компилятор, для которого вы указываете командную строку. Предоставляет компиляторы GCC и Clang для использования.
- http://cpp.sh/ — Онлайн-компилятор с поддержкой C ++ 14. Не позволяет редактировать командную строку компилятора, но некоторые параметры доступны через элементы управления графическим интерфейсом.
- https://gcc.godbolt.org/ — Предоставляет широкий список версий, архитектуры и разборки компилятора. Очень полезно, когда вам нужно проверить, что ваш код компилируется разными компиляторами. GCC, Clang, MSVC (
CL
), компилятор Intel (icc
), ELLCC и Zapcc, причем один или несколько из этих компиляторов доступны для ARM, ARMv8 (как ARM64), Atmel AVR, MIPS, MIPS64, MSP430, PowerPC , x86 и x64 architecutres. Аргументы командной строки компилятора могут быть отредактированы. - https://ideone.com/ — Широко используется в сети для иллюстрации поведения фрагмента кода. Предоставляет GCC и Clang для использования, но не позволяет редактировать командную строку компилятора.
- http://melpon.org/wandbox — Поддерживает многочисленные версии компилятора Clang и GNU / GCC.
- http://onlinegdb.com/ — крайне минималистичная среда разработки, включающая редактор, компилятор (gcc) и отладчик (gdb).
- http://rextester.com/ — Предоставляет компиляторы Clang, GCC и Visual Studio для C и C ++ (наряду с компиляторами для других языков), с доступной для использования библиотекой Boost.
- http://tutorialspoint.com/compile_cpp11_online.php — полнофункциональная оболочка UNIX с GCC и удобный для пользователя проект.
- http://webcompiler.cloudapp.net/ — Компилятор Online Visual Studio 2015, предоставленный Microsoft в составе RiSE4fun.
Когда вы разрабатываете программу на C ++, следующим шагом является компиляция программы перед ее запуском. Компиляция — это процесс, который преобразует программу, написанную на удобочитаемом языке, такую как C, C ++ и т. Д., В машинный код, который прямо понимается Центральным процессором. Например, если у вас есть исходный код C ++ с именем prog.cpp, и вы выполняете команду компиляции,
g++ -Wall -ansi -o prog prog.cpp
Существует четыре основных этапа, связанных с созданием исполняемого файла из исходного файла.
-
Препроцессор C ++ принимает файл исходного кода C ++ и обрабатывает заголовки (#include), макросы (#define) и другие директивы препроцессора.
-
Расширенный исходный код C ++, созданный препроцессором C ++, скомпилирован на язык ассемблера для платформы.
-
Код ассемблера, сгенерированный компилятором, собран в код объекта для платформы.
-
Файл объектного кода, созданный ассемблером, связан вместе
с объектными кодами для любых библиотечных функций, используемых для создания библиотеки или исполняемого файла.
предварительная обработка
Препроцессор обрабатывает директивы препроцессора, такие как #include и #define. Это агностик синтаксиса C ++, поэтому его следует использовать с осторожностью.
Он работает в одном исходном файле C ++ за раз, заменяя директивы #include содержимым соответствующих файлов (обычно это просто объявления), выполняет замену макросов (#define) и выбирает разные части текста в зависимости от #if, #ifdef и #ifndef.
Препроцессор работает над потоком токенов предварительной обработки. Макрозамена определяется как замена токенов другими токенами (оператор ## позволяет слить два токена, когда это имеет смысл).
После этого препроцессор создает один вывод, который представляет собой поток токенов, полученный в результате описанных выше преобразований. Он также добавляет некоторые специальные маркеры, которые сообщают компилятору, откуда появилась каждая строка, чтобы он мог использовать их для создания разумных сообщений об ошибках.
На этом этапе могут быть сделаны некоторые ошибки с умным использованием директив #if и #error.
Используя ниже флаг компилятора, мы можем остановить процесс на этапе предварительной обработки.
g++ -E prog.cpp
компиляция
Шаг компиляции выполняется на каждом выходе препроцессора. Компилятор анализирует чистый исходный код C ++ (теперь без каких-либо предпроцессорных директив) и преобразует его в код сборки. Затем вызывает базовый сервер (ассемблер в toolchain), который собирает этот код в машинный код, производящий фактический двоичный файл в некотором формате (ELF, COFF, a.out, …). Этот объектный файл содержит скомпилированный код (в двоичной форме) символов, определенных на входе. Символы в объектных файлах называются по имени.
Файлы объектов могут ссылаться на символы, которые не определены. Это тот случай, когда вы используете декларацию и не предоставляете определение для нее. Компилятор не возражает против этого и будет с удовольствием создавать объектный файл до тех пор, пока исходный код будет правильно сформирован.
Компиляторы обычно позволяют прекратить компиляцию на этом этапе. Это очень полезно, потому что с ним вы можете скомпилировать каждый исходный код отдельно. Преимущество этого заключается в том, что вам не нужно перекомпилировать все, если вы меняете только один файл.
Созданные объектные файлы могут быть помещены в специальные архивы, называемые статическими библиотеками, для более легкого повторного использования позже.
На этом этапе сообщается о «регулярных» ошибках компилятора, таких как синтаксические ошибки или ошибки с ошибками при перегрузке.
Чтобы остановить процесс после этапа компиляции, мы можем использовать параметр -S:
g++ -Wall -ansi -S prog.cpp
монтаж
Ассемблер создает объектный код. В системе UNIX вы можете видеть файлы с суффиксом .o (.OBJ на MSDOS), чтобы указать файлы объектных кодов. На этом этапе ассемблер преобразует эти объектные файлы из кода сборки в инструкции машинного уровня, а созданный файл является перемещаемым объектным кодом. Следовательно, на этапе компиляции создается перемещаемая объектная программа, и эта программа может использоваться в разных местах без повторной компиляции.
Чтобы остановить процесс после шага сборки, вы можете использовать опцию -c:
g++ -Wall -ansi -c prog.cpp
соединение
Линкером является то, что дает окончательный результат компиляции из файлов объектов, созданных ассемблером. Этот вывод может быть либо общей (или динамической) библиотекой (и, хотя имя похоже, они не имеют много общего со статическими библиотеками, упомянутыми ранее), либо исполняемый файл.
Он связывает все объектные файлы, заменяя ссылки на неопределенные символы правильными адресами. Каждый из этих символов может быть определен в других объектных файлах или в библиотеках. Если они определены в библиотеках, отличных от стандартной библиотеки, вам нужно сообщить об этом компоновщику.
На этом этапе наиболее распространенными ошибками являются отсутствующие определения или дублирующие определения. Первое означает, что либо определения не существуют (т.е. они не написаны), либо что объектные файлы или библиотеки, в которых они находятся, не были предоставлены компоновщику. Последнее очевидно: один и тот же символ был определен в двух разных объектных файлах или библиотеках.
Компиляция с помощью кода :: Блоки (графический интерфейс)
-
Загрузите и установите Code :: Blocks здесь . Если вы находитесь в Windows, будьте осторожны, чтобы выбрать файл, для которого имя содержит
mingw
, другие файлы не устанавливают компилятор. -
Откройте код :: Блоки и нажмите «Создать новый проект»:
-
Выберите «Консольное приложение» и нажмите «Перейти»:
-
Нажмите «Далее», выберите «C ++», нажмите «Далее», выберите имя для своего проекта и выберите папку для ее сохранения, нажмите «Далее» и затем нажмите «Готово».
-
Теперь вы можете редактировать и компилировать свой код. Код по умолчанию, который печатает «Hello world!» в консоли уже есть. Чтобы скомпилировать и / или запустить вашу программу, нажмите одну из трех кнопок компиляции / запуска на панели инструментов:
Для компиляции без запуска нажмите , для запуска без компиляции снова нажмите и компилировать, а затем запускать, нажмите ,
Компиляция и запуск по умолчанию «Hello world!» код дает следующий результат: