Что такое команда для компиляции и запуска программ на C ++?

90

Я новичок в Linux. Я использую Ubuntu 11.04 и не знаю, как скомпилировать и выполнить программу C ++ в нем. Мне нужно знать команды для компиляции и выполнения программы на C ++ в Linux.

Rajeshkumar
источник
1
Вам помог какой-нибудь из ответов?
Линд

Ответы:

109

Чтобы скомпилировать ваш код на C ++, используйте:

g++ foo.cpp

В этом примере foo.cpp - это имя программы для компиляции.

Это создаст исполняемый файл в том же каталоге, a.outкоторый вы можете запустить, набрав в своем терминале:

./a.out

g ++ уже должен быть в вашем $ PATH, поэтому вам не нужно /usr/bin/g++явно вызывать , но вы можете использовать последний в любом случае.

foo.cppдолжен находиться в том же каталоге, из которого вы запускаете команду. Если есть какие-либо сомнения, вы можете убедиться, что находитесь в том же каталоге, набрав ls foo.cppили head foo.cpp(если вам нужно убедиться, что вы работаете с правильным foo.)

Как отмечает @ con-f-use, компилятор обычно делает этот файл исполняемым, но если нет, вы можете сделать это самостоятельно (так что команда для выполнения ./a.outили эквивалентная будет работать):

chmod +x ./a.out

Чтобы указать имя скомпилированного выходного файла, чтобы он не назывался a.out, используйте -oкоманду g ++.

Например

g++ -o output foo.cpp

Это скомпилирует foo.cppв двоичный файл с именем output, и вы можете напечатать, ./outputчтобы запустить скомпилированный код.

belacqua
источник
6
Компилятор обычно делает a.outисполняемый файл ( в данном случае). Если вы не можете сделать это, набрав: chmod +x a.out. Когда ваша скомпилированная программа является исполняемой, вы можете запустить ее, набрав ./a.out- точка и знак косой черты, что вы хотите ее выполнить.
con-f-use
@Rajeshkumar, вы нашли один из этих ответов по своему вкусу? Если да, то не могли бы вы отметить один из них как принятый ответ (выбрав галочку под стрелками вверх / вниз), чтобы мы могли подвести черту под этой проблемой.
Есть ли разница между выводом g ++ foo.c -o и выводом g ++ -o foo.c?
Goldname
21

Я делаю два предположения здесь:

  1. У вас уже есть исходный файл / программа на C ++, готовая к сборке
  2. Вы установили систему сборки на свой компьютер

Самый простой способ скомпилировать программу на C ++ в Ubuntu или любом другом дистрибутиве Linux - набрать

g++ main.cpp -o main
  • g ++ - это вызов компонента C ++ GCC , компилятора defacto для C / C ++ и целого ряда других языков на платформе Linux. В настоящее время это единственный компилятор, способный компилировать ядро ​​Linux.
  • main.cpp - это исходный файл c ++, который вы хотите скомпилировать.
  • -o main указывает имя выходного файла, который вы хотите создать после компиляции исходного кода. Целевой исходный файл и целевой выходной файл могут быть инвертированы, если хотите, поэтому g++ -o main main.cppодинаково действительны.
  • Чтобы затем выполнить эту программу, вам нужно сделать ./main в терминале.

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

g++ ~/Desktop/main.cpp -o ~/Projects/main

скомпилирует исходный файл C ++, расположенный на вашем рабочем столе, и поместит исполняемый файл в Projectsпапку в вашем домашнем каталоге. Чтобы запустить этот исполняемый файл, запустите ./Projects/main.


источник
5

Вот как мне нравится компилировать с g ++.

$g++ -W -Wall -pedantic -o programName -p sourceFile.cpp

-W: Print extra warning messages for some problems.
-Wall: Enable all the warnings about questionable code
-pedantic: Show all the warnings demanded by strict ISO compliance
-o programName: place the executable output in programName sourceFile.cpp: the 
name of our source code file
-p: Generate extra code to write profile information suitable for the analysis program prof
amrx
источник
1
-p: Generate extra code to write profile information suitable for the analysis program prof.
Ганс
Мне нравится твой ответ. Это приносит дополнительные предложения. Но вы должны действительно перефразировать это как общеприемлемое.
LinuxSecurityFreak
1

Вам нужен g ++, поскольку gcc не может легко скомпилировать файл cpp.
Вы также должны изучить vim или emacs для написания кода на C.
Просто попробуйте это на своем терминале:

Введите тестовую программу и сохраните ее:

$vim hello.cc

Скомпилировать hello.ccс g ++:

$g++ hello.cc -o hello

Выполните это:

$./hello

Здесь ./означает, что исполняемый файл находится под текущим каталогом.

bigeast
источник
3
gcc - это компилятор GNU для компиляторов C и C ++. И OP не обязательно должен знать vim или emacs для написания кода на C, есть много других текстовых редакторов и IDE.
Нитин Венкатеш
3
хотя я люблю vim, если кто-то уже пытается выяснить, как решить проблему, предположить, что vim не очень полезен.
johanvdw
Мне лично не нравится vi, но это не важно. Вы должны отказаться от предложения конкретного редактора, каждый в любом случае использует его / ее.
LinuxSecurityFreak
0

g++является интерфейсом gcc(GNU Compiler Collection) с некоторыми предопределенными макросами c ++ и различными параметрами / флагами по умолчанию.

Компиляция кода c ++ с помощью gccудобна, когда g++она недоступна по ряду причин, на самом деле это просто вопрос ссылки на библиотеку c ++ -lstdc++и информирования gcc для обработки ввода как кода c ++ (либо с помощью .Cрасширения, либо с помощью языка с помощью -x)
другие действительные суффиксы имен файлов C ++: .cc, .cp, .cxx, .cpp, .CPP,.c++

пример :

gcc cpp_code.C -lstdc++ расширение в верхнем регистре ( .C) важно, чтобы gcc знал, что это файл c ++.

или явно указав язык ввода:

gcc -x c++ cpp_code.txt -lstdc++ расширение может быть чем угодно, или даже ничем

по умолчанию результатом (после успешной компиляции) является a.outфайл, который можно запустить с./a.out


источник
Ваш ответ более информативен
Биллал Бегерадж