C 语言调用静态库
静态库是把多个目标文件(.o)打包成一个归档文件,链接时直接把代码复制进可执行文件。下面以最简单的例子说明整个过程。
1. 编写库源码
mylib.h(头文件,声明接口):
1 |
|
mylib.c(实现):
1 |
|
2. 生成静态库
Linux / macOS(gcc + ar):
1 | gcc -c mylib.c -o mylib.o # 编译成目标文件 |
Windows(MSVC):
1 | cl /c mylib.c # 编译成 mylib.obj |
3. 在主程序中调用
main.c:
1 |
|
4. 编译并链接
1 | # Linux / macOS(gcc) |
参数说明:
| 参数 | 作用 |
|---|---|
-I路径 |
指定头文件搜索路径(mylib.h 所在目录) |
-L路径 |
指定库文件搜索路径 |
-lmylib |
链接库,规则:去掉 lib 前缀和 .a 后缀,即 -l + libmylib.a → -lmylib |
如果库文件就在当前目录,也可以直接写文件名 gcc main.c mylib.a -o main,更直观。
缺点
- 使用静态链接生成的可执行文件体积比较大
- 包含相同的公共代码,造成浪费
关于本文
由 GuQing 撰写,采用 CC BY-NC 4.0 许可协议。