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

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

68
задан 14 September 2011 в 21:28

36 ответов

Вот как мне нравится компилироваться с 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
4
ответ дан 10 August 2018 в 09:15
  • 1
  • 2
    Мне нравится ваш ответ. Это приносит дополнительные предложения. Но вы должны действительно повторить его, чтобы быть общеприемлемым. – Vlastimil 6 November 2017 в 10:39

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

g++ foo.c

foo.c в этом примере - это имя скомпилируемой программы.

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

./a.out

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

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

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

chmod +x ./a.out

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

g++ -o output foo.c

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

81
ответ дан 10 August 2018 в 09:15
  • 1
    Компилятор обычно делает двоичный файл (a.out в этом случае) исполняемым. Если нет, вы можете сделать это: chmod +x a.out. Когда ваша скомпилированная программа является исполняемой, вы можете запустить ее, набрав ./a.out - точку и индикацию косой черты, которую вы хотите выполнить. – con-f-use 14 September 2011 в 20:57
  • 2
    @Rajeshkumar, вы нашли один из этих ответов по своему вкусу? Если да, тогда вы могли бы пометить один из них в качестве принятого ответа (путем выделения галочки под стрелками вверх / вниз), чтобы мы могли провести линию под этой проблемой. – Chris Wilson 11 October 2011 в 17:47
  • 3
    Есть ли разница между g ++ foo.c -o выходом и g ++ -o выходом foo.c? – Goldname 1 October 2016 в 05:51

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

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

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

g++ main.cpp -o main g ++ - это вызов C ++-компонента GCC, дефакто-компилятора для 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.

15
ответ дан 10 August 2018 в 09:15
g++ filename.cpp

, например:

g++ One.cpp

Это будет генерировать выходной файл с именем (например):

a.out

Если вы создаете другую программу и компилируете ее (например) :

g++ Two.cpp

Это также будет генерировать выходной файл с именем (например):

a.out

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

g++ One.cpp -o One

, ваш выходной файл будет:

One

Теперь вы можете выполнить файл с указанным вами именем. [ ! d6]

2
ответ дан 10 August 2018 в 09:15
  • 1
    Я не могу понять, как этот ответ может улучшить существующую принято отвечать. – Vlastimil 6 November 2017 в 10:38

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

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

$vim hello.cc

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

$g++ hello.cc -o hello

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

$./hello

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

1
ответ дан 10 August 2018 в 09:15
  • 1
    gcc - это компилятор GNU для компилятора C и C ++. И OP не обязательно должен знать vim или emacs для написания кода C, есть много других текстовых редакторов и среды IDE. – Nitin Venkatesh 14 September 2011 в 21:38
  • 2
    хотя я люблю vim, если кто-то уже борется с тем, как решить проблему, предлагая vim не очень полезно. – johanvdw 14 September 2011 в 21:45
  • 3
    Мне лично не нравится vi, но это не имеет значения. Вы должны отклониться от предложения конкретного редактора, каждый использует его / ее собственный. – Vlastimil 6 November 2017 в 10:36

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

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

пример:

gcc cpp_code.C -lstdc++ другие допустимые суффиксы имени файла c ++: .cc, .cp, .cxx, .cpp, .CPP, .c++

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

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

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

0
ответ дан 10 August 2018 в 09:15

Другие вопросы по тегам:

Похожие вопросы: