一、什么是库?
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行,我们把不需要升级更新维护的代码打包合并在一起方便使用,也可以对源代码进行保密。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。
Linux/UNIX操作系统支持的函数库分为静态库和动态库,动态库又称共享库。Linux系统有几个重要的目录存放相应的函数库,如/lib 、 /usr/lib。
二、静态函数库
这类库的名字一般是libxxx.a
1、创建静态库
①、编译object文件。例如:gcc -Wall -c ctest1.c ctest2.c
,该命令会生成ctest1.o和ctest2.o(其中-Wall表示编译时输出警告)。
②、打包生成静态库: ar -r libxxx.a x1.o x2.o …
这里列出关于ar命令的一些参数:
参数 | 作用 | 使用格式 |
---|---|---|
-r | 把目标文件添加到静态库中,已经存在的更新 | ar -r 库名 目标文件 |
-q | 将目标文件追加到静态库的末尾 | ar -q 库名 目标文件 |
-d | 从静态库中删除目标文件 | ar -d 库名 目标文件 |
-t | 显示静态库有哪些目标文件 | ar -t 库名 |
-x | 把静态库拆分成目标文件</ |