You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于GCC编译:预处理(cpp)与链接(ld)处理库的疑问确认

GCC预处理与链接的职责确认

你的理解基本正确,再补充些细节让逻辑更清晰:

  • 预处理阶段(执行cpp工具):把.c文件处理成.i文件时,只是将#include <stdio.h>这类头文件的内容直接插入到.i文件中。而头文件里仅包含函数声明、宏定义、类型定义(比如printf()的声明int printf(const char *format, ...);),完全不会包含库函数的实际实现代码。
  • 链接阶段(执行ld工具):编译器先把.i文件编译成目标文件(.o)后,链接器会找到对应库(比如标准C库libc.so或libc.a)中printf()这类函数的实际实现代码,将其与你的目标文件合并,最终生成可执行文件(如a.out)。

额外说明:如果使用静态链接(编译时加-static参数),链接器会把程序用到的库代码直接拷贝进a.out;如果是默认的动态链接,不会把库代码完整放入可执行文件,只会记录需要调用的库函数位置,等程序运行时再加载对应的动态库文件。

内容的提问来源于stack exchange,提问作者DLR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:12:02