从源文件到可执行程序,大致会经过预处理、编译、汇编、链接四个阶段。

如果有一组源文件需要反复在多个项目里使用,可以把它们的目标文件(.o)打包成一个库,这样之后链接的时候直接拿这个库就行,不用每次都重新编译那些 .c。所谓的库,本质就是一堆 .o 文件的集合,相当于可执行程序的'半成品'。

要理解库的基本操作,先来看一个简单的例子。main.c 里自己写了一个加法函数,但一般我们更关心 printf 这种 C 标准库提供的功能。用 ldd 看一下生成的可执行文件,能看到它依赖了 libc.so.6,这就是动态版的 C 标准库。
// main.c
#include <stdio.h>
#include <string.h>
int MyAdd(int x, int y) {
return x + y;
}
int MySub(int x, int y) {
return x - y;
}
int main() {
int a = 10;
int b = 20;
printf("%d + %d = %d\n", a, b, MyAdd(a, b));
return 0;
}





























