C++ 入门:从源码到可执行文件

2 min read [C/C++零基础到大神] post #cpp#compile#basic

C++ 程序不是直接运行源码。通常会经历预处理、编译、汇编和链接几个阶段。

最小程序

#include <iostream>

int main() {
    std::cout << "hello, cpp\n";
    return 0;
}

main 是程序入口。#include 会引入头文件声明,std::cout 来自标准库。

编译与链接

g++ main.cpp -o app

编译器先把源码翻译成目标文件,再由链接器把目标文件和库组合成可执行文件。

C++ 标志 图片来源:Wikimedia Commons,ISO C++ Logo。

常见错误

我自己的理解

初学 C++ 时,最容易把“写代码”和“运行代码”中间的过程看成黑箱。后来我发现,很多莫名其妙的问题其实都能在编译和链接阶段解释清楚。例如头文件只是声明的集合,真正的实现可能在另一个 .cpp 文件或者库文件里。你在头文件里看到了函数声明,不代表链接器一定能找到它的实现。

写小程序时可以直接 g++ main.cpp -o app,但项目稍微变大后,最好有意识地区分源文件、头文件、目标文件和最终产物。这个习惯会影响后面学习 CMake、静态库、动态库以及第三方依赖管理。

练习

可以准备两个文件:main.cppmath.cpp。先只在 main.cpp 里声明 int add(int, int);,然后故意不编译 math.cpp,观察链接错误。再把两个文件一起编译,看看错误如何消失。

评论

...

正在读取评论。