g++ -v file.cpp
分别解释下这些输出都是在干嘛
一.编译器的基本信息:
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' ...
Thread model: posix
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
COLLECT_GCC=g++
:这是你所使用的编译器g++
(GNU C++ 编译器)的位置和命令。Target: x86_64-linux-gnu
:目标平台是 x86_64 架构的 Linux 操作系统。Configured with
:这是编译器的配置参数,展示了在构建编译器时用的配置选项(比如支持的语言、路径、库等)。
二. 编译过程的详细输出
/usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v
-imultiarch x86_64-linux-gnu -D_GNU_SOURCE grid_map.cpp
-quiet -dumpbase grid_map.cpp -mtune=generic -march=x86-64
-auxbase grid_map -version -fasynchronous-unwind-tables
-fstack-protector-strong -Wformat -Wformat-security
-fstack-clash-protection -fcf-protection -o /tmp/ccylRcKD.s
cc1plus
是实际的 C++ 编译器,它负责将 C++ 源代码 (grid_map.cpp
) 编译成汇编代码。-v
选项表示输出详细信息,展示编译器的每个步骤。-D_GNU_SOURCE
是预定义宏,通常用于启用特定的系统功能。grid_map.cpp
是要编译的 C++ 源文件。-o /tmp/ccylRcKD.s
表示编译结果将被输出到/tmp/ccylRcKD.s
文件(汇编文件)。
3. 版本和库信息:
GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)
compiled by GNU C version 9.4.0, GMP version 6.2.0,
MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP
4. 编译警告和错误信息:
grid_map.cpp:1:10: fatal error: grid_map.h: No such file or directory
1 | #include "grid_map.h"
| ^~~~~~~~~~~~
compilation terminated.
5. 搜索路径信息:
#include "..." search starts here:
#include <...> search starts here:
/usr/include/c++/9
/usr/include/x86_64-linux-gnu/c++/9
/usr/include/c++/9/backward
/usr/lib/gcc/x86_64-linux-gnu/9/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
这部分展示了编译器在查找头文件时会搜索的路径。#include "grid_map.h"
语句会让编译器去这些目录中查找 grid_map.h
文件。
总结:
- 编译器启动时输出了详细的配置信息、版本信息以及使用的库。
- 编译器尝试编译
grid_map.cpp
文件,但由于grid_map.h
头文件无法找到,导致编译失败。 - 你需要检查头文件
grid_map.h
是否存在,或者是否需要调整 include 路径以确保正确找到该文件。