我是Linux新手。我正在使用Ubuntu 11.04,但不知道如何在其中编译和执行C ++程序。我需要知道在Linux中编译和执行 C ++程序的命令。
我是Linux新手。我正在使用Ubuntu 11.04,但不知道如何在其中编译和执行C ++程序。我需要知道在Linux中编译和执行 C ++程序的命令。
Answers:
要编译您的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
运行已编译的代码。
a.out
在这种情况下)可执行。如果没有,您可以输入:chmod +x a.out
。当编译后的程序是可执行文件时,可以键入./a.out
要执行的程序-点和斜杠指示。
我在这里做两个假设:
在Ubuntu或任何其他Linux发行版上编译C ++程序的最简单方法是键入
g++ main.cpp -o main
g++ -o main main.cpp
同样有效。上面的命令假定您已经在源文件的位置,但是源文件和目标输出文件也都可以指定为目录。例如
g++ ~/Desktop/main.cpp -o ~/Projects/main
将编译位于桌面上的C ++源文件,并将可执行二进制Projects
文件放在主目录中的文件夹中。要运行此可执行文件,请运行./Projects/main
。
这就是我喜欢使用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
-p: Generate extra code to write profile information suitable for the analysis program prof.
您需要g ++,因为gcc可能无法轻松编译cpp文件。
您还需要学习vim或emacs来编写C代码。
只需在您的终端上尝试:
输入测试程序并保存:
$vim hello.cc
hello.cc
用g ++ 编译:
$g++ hello.cc -o hello
执行它:
$./hello
在这里,这./
意味着exe文件位于当前目录下。
vi
,但这没关系。您应该偏离建议一个特定的编辑器的位置,每个人都应该使用他/她自己的编辑器。
g++
是gcc
(GNU编译器集合)的前端,带有一些预定义的c ++宏和不同的默认选项/标志。
gcc
当g++
由于多种原因而无法使用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