【发布时间】:2013-10-05 03:10:18
【问题描述】:
我对使用 g++ 编译 C/C++ 代码时的编译阶段非常有基本的了解,但我希望得到确认、澄清和额外的智慧。
对于这组文件:
main.c
foo.h
foo.c
bar.h
bar.c
这些调用执行以下操作...
g++ -c foo.c
g++ -c bar.c
g++ -c main.c
现在将头文件添加到源文件中,并将所有这些 .c 文件编译为 .o 文件。
g++ -o main.out main.o foo.o bar.o
现在所有 .o 文件都链接到一个可执行文件中 - main.out。
【问题讨论】:
-
我们不知道这些标题是做什么用的。
-
头文件没有被包含那么多链接......也就是说,当预处理器正在读取一个文件时,当它遇到#include时,它会将.h文件插入到它的in-逐字记忆复制。换句话说,对于编译器来说,.c 文件中的 #include "bar.h" 行与使用文本编辑器在同一行插入 bar.h 的内容完全相同。
-
另外,.o 文件已经编译(.o 代表目标文件)。下一步是将它们链接到一个可执行文件中。
-
我想知道为什么我在这个问题上被否决了,这可能是从一个相对不成熟的角度来看,但我认为它提出了一些很好的问题和卡梅伦的一个很好的解释,这对我很有用并且可能对具有类似经验水平的其他人有用。有什么问题?
标签: c++ compiler-construction g++