静态库:
制作生成:
1、写源文件,通过 gcc -c xxx.c 生成目标文件。
2、.c转换成文件名.o ar ( -)rcs lib库名.a
(用 ar 归档目标文件,生成静态库。)
3、配合静态库,写一个使用静态库中函数的头文件。
4、使用静态库时,在源码中包含对应的头文件,
链接时记得链接自己的库(自动默认库在系统文件中),
将静态库copy到库目录(/usr/lib或者/lib)下:
cp lib文件名.a /usr/lib/lib文件名.a
rc:静态库不存在就生成该库
s:有该库则更新
-l库名 -L库可查询的存放路径
动态库:
一、基本概念
1. 动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序。动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成。
2. 动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name)。别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成。真名是动态链接库真实名称,一般总是在别名的基础加上一个小版本号,发布版本等构成。除此之外,还有一个链接名,即程序链接时使用的库的名字。
3.在动态链接库安装的时候,总是复制文件到某个目录下,然后用一个软连接生成别名,在库文件进行更新的时候,仅仅更新软链接即可。
二、制作生成
1、编写源文件。
2、将一个或几个源文件编译链接,生成共享库。
3、通过 -L<path> -lxxx 的gcc选项链接生成的libxxx.so。
4、把lib文件名.so放入链接库的标准路径,或指定 LD_LIBRARY_PATH,才能运行链接了lib文件名.so的程序。
创建:
gcc -shared -fPIC -o 库名.so 源文件.c
使用:
gcc - 源文件.c ./ 库名,so -o 可执行文件名