静态库

最后更新于:2022-04-02 03:52:02

[TOC] ## 静态库 静态库,也叫归档文件(archive),因此按惯例得到`.a`结尾后缀的库文件(比如`/usr/lib/libc.a`) 自己制作静态库:基于`ar`程序和`gcc -c`(编译、汇编到目标代码,不进行链接)对函数分别进行编译,应该尽可能的分别保存到不同的源文件中,公共数据保存在同一个源文件中(基于声明的静态变量) ### 自己创建静态库
fred.c ``` #include void fred(int arg) { printf("fred: we passwd %d \n", arg); } ```

bill.c ``` #include void bill(char *arg) { printf("bill: we passwd %s\n", arg); } ```

bf.h ``` #include #include "bf.h" int main() { bill("hey man, cool"); exit(0); } ```

porg.c ``` #include #include "bf.h" int main() { bill("hey man, cool"); exit(0); } ```

命令行链接 & 打包 ``` gcc -c *.c #编译成object,用于链接和做成静态库 gcc -o prog prog.o bill.o #链接输出到prog执行文件 // 制作静态库 ar crv libfoo.a bill.o fred.o #创建库文件 ranlib libfoo.a #为函数库生成内容表,后续可以基于`nm libfoo.a`或者`nm prog`查看 // 编译链接 gcc -o prog2 prog.c -L. -lfoo // 或者 gcc -o prog1 prog.c -L. libfoo.a ```
';