2.2.2. 使用 C++ Compiler
要在命令行中编译 C++ 程序,请运行 g++
编译器,如下所示:
$ scl enable devtoolset-11 'g++ -o output_file source_file...'
这会在当前工作目录中创建名为 output_file 的二进制文件。如果省略 -o
选项,则 g++
编译器会默认创建一个名为 a.out
的文件。
在处理由多个源文件组成的项目时,通常会先为每个源文件编译对象文件,然后将这些对象文件链接到一起。这样,当您更改单个源文件时,您只能重新编译此文件,而无需编译整个项目。在命令行中编译对象文件:
$ scl enable devtoolset-11 'g++ -o object_file -c source_file'
这将创建一个名为 object_file 的对象文件。如果省略 -o
选项,则 g++
编译器会在源文件后创建一个名为 .o
文件扩展名的文件。将对象文件链接到一起并创建二进制文件:
$ scl enable devtoolset-11 'g++ -o output_file object_file...'
请注意,您可以使用 scl
程序执行任何命令,从而导致使用 Red Hat Developer Toolset 二进制文件运行它,而不是 Red Hat Enterprise Linux 系统等同的 Red Hat Enterprise Linux 系统。这可让您使用 Red Hat Developer Toolset g++
作为默认值运行 shell 会话:
$ scl enable devtoolset-11 'bash'
在任意时间点上验证您使用的 g++
版本:
$ which g++
Red Hat Developer Toolset 的 g++
可执行路径以 /opt 开头。另外,您可以使用以下命令确认与 Red Hat Developer Toolset g++
匹配的版本号:
$ g++ -v
例 2.3. 在命令行上编译 C++ 程序
考虑名为 hello.cpp
的源文件,其内容如下:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { cout << "Hello, World!" << endl; return 0; }
使用 Red Hat Developer Toolset 中的 g++
编译器在命令行中编译此源代码:
$ scl enable devtoolset-11 'g++ -o hello hello.cpp'
这会在当前工作目录中创建一个名为 hello
的新二进制文件。