一、首先我们来看一下什么是静态库和动态库,在这之前我们来看一下编译成可执行文件的过程:
1、静态库(.a、.lib):就是在使用的时候会把代码复制到文件中;
它的优点:独立,在链接后不需要静态库源文件
它的缺点:太占用内存空间,不利于修改和维护
2、动态库(.so、.dll):把代码的地址放到目标文件中
它的优点:占用内存空间小,维护和修改方便
它的缺点:程序运行的时候必须保证共享库能找到(不独立),速度会稍微慢一点
二、使用纯静态库格式:
gcc -static.c文件(我这里是linux系统环境下)
三、创建静态库步骤:
1、编写源程序.c文件
2、编译的时候生成.o文件
3、生成静态库.a
格式为:ar -r 库文件名称 所有的.o文件
库文件名称规范:lib 开头 .a结尾 中间放库名
即:ar -r libmyku.a
下面看例子:
[tu@localhost unix]$ vi day02.c #生成一个.c源文件
[tu@localhost unix]$ gcc day02.c
[tu@localhost unix]$ ./a.out #进行编译输出,我这里利用gcc编译器
hellow world
[tu@localhost unix]$ gcc -c day02.c
#这里的意思是把.c文件改成.o文件,结果如下
[tu@localhost unix]$ ls
a.out day02.c day02.o
#生成静态库
[tu@localhost unix]$ ar -r libmyku.a day02.o
ar: 正在创建 libmyku.a
[tu@localhost unix]$ ls
a.out day02.c day02.o libmyku.a
注明:gcc 编译器的安装步骤,先安装好yum ,然后在切换到/etc/yum.repos.d/文件目录下,最后进行yum install gcc,就可以了(我这里是在线安装的gcc ,要系统连上网就可以)
静态库链接使用步骤:
1、编写使用程序.c 文件,并保存退出
2、编写.c 文件生成目标文件
gcc -c X.c
3、链接静态库和.o文件,有三种方式:
a、强行链接:
gcc.o文件库名称
b、双L链接法(重点):
gcc.o文件 -l库名 -L库所在目录
c、单L链接法:
gcc.o文件 -l库名称(需要配置环境变量—)
注明:ldd命令可以查看使用了那些库文件