什么是编译和运行C ++程序的命令?


Answers:


108

要编译您的c ++代码,请使用:

g++ foo.cpp

示例中的foo.cpp是要编译的程序的名称。

这将在相同目录中生成一个可执行文件a.out,您可以通过在终端中键入以下命令来运行该可执行文件:

./a.out

g ++应该已经在$ PATH中,因此您不需要/usr/bin/g++显式调用,但是在任何情况下都可以使用后者。

foo.cpp应该与您从中运行命令的目录相同。如果有任何疑问,可以通过键入ls foo.cpphead 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运行已编译的代码。


6
编译器通常使二进制文件(a.out在这种情况下)可执行。如果没有,您可以输入:chmod +x a.out。当编译后的程序是可执行文件时,可以键入./a.out要执行的程序-点和斜杠指示。
混淆使用

@Rajeshkumar,您是否找到了自己喜欢的答案之一?如果是这样,那么您能否将其中一个标记为可接受的答案(通过选择上/下投票箭头下方的对勾),以便我们在此问题下画一条线。

g ++ foo.c -o输出和g ++ -o输出foo.c之间有区别吗?
Goldname '16

21

我在这里做两个假设:

  1. 您已经准备好要构建的C ++源文件/程序
  2. 您已经在计算机上设置了构建系统

在Ubuntu或任何其他Linux发行版上编译C ++程序的最简单方法是键入

g++ main.cpp -o main
  • g ++GCC的C ++组件的调用,它是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

1
-p: Generate extra code to write profile information suitable for the analysis program prof.
汉斯(Hans)

我喜欢你的回答。它带来了额外的建议。但是您应该重新定义它以使其普遍接受。
LinuxSecurityFreak

1

您需要g ++,因为gcc可能无法轻松编译cpp文件。
您还需要学习vim或emacs来编写C代码。
只需在您的终端上尝试:

输入测试程序并保存:

$vim hello.cc

hello.cc用g ++ 编译:

$g++ hello.cc -o hello

执行它:

$./hello

在这里,这./意味着exe文件位于当前目录下。


3
gcc是用于C和C ++编译器的GNU编译器。并且OP不一定需要知道vim或emacs来编写C代码,还有许多其他文本编辑器和IDE随处可见。
Nitin Venkatesh

3
尽管我喜欢vim,但是如果有人已经在寻找解决问题的方法时遇到了困难,那么建议vim并不是很有用。
johanvdw 2011年

我个人不喜欢vi,但这没关系。您应该偏离建议一个特定的编辑器的位置,每个人都应该使用他/她自己的编辑器。
LinuxSecurityFreak

0

g++gcc(GNU编译器集合)的前端,带有一些预定义的c ++宏和不同的默认选项/标志。

gccg++由于多种原因而无法使用c ++代码进行编译时,实际上是很方便的,实际上,这只是链接到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


您的答案更具参考价值
Billal Begueradj
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.