C静态库
为什么要使用库?
使用库可以加快编译的链接阶段,因为要查找和打开的文件较少。
什么是静态库?
静态库是对象文件的集合,其中可以包含函数,变量等。在Linux中,静态库以’.a’扩展名结尾,而Microsoft Windows使用“ .lib”扩展名。
如何建立它们
假设我们要创建一个带有两个函数“ strlen.c”和“ atoi.c”的静态库。 首先从源代码获取目标文件。
-$ ls
atoi.c标头.h main.c strlen.c
-$ gcc -c strlen.c atoi.c
-$ ls
atoi.c atoi.o标头.h main.c strlen.c strlen.o
现在已经创建了目标文件,使用归档器(ar)创建静态库。
-$ ar -rc libf.a strlen.o atoi.o
-S ls
atoi.c atoi.o标头.h libf.a main.c strlen.c strlen.o
这将创建一个名为libf.a的静态库,其中将两个目标文件都复制到其中。 “ c”标志创建档案,“ r”用于将较旧的目标文件替换为较新的文件。 现在,我们必须使用ranlib索引该库,以便编译器可以加快库中的符号查找速度。 您可以使用’nm’列出libf.a中的符号。
-$ ranlib libf.a
-$ nm libf.a
strlen.o:
0000000000000000 T _strlen
atoi.o:
0000000000000000 T _atoi
如何使用
main.c文件使用libf.a中的函数来获取字符串“ Hello,World”的长度以及字符串“ num 123”中的整数。 该命令告诉gcc将main.c与我们的库–lf一起使用以创建名为exe的程序。 “ L”标志将从指定目录中查找库。
-$ gcc main.c -L。 -lf -o exe
-$ ./exe
长度:13
整数:123