1.什么是库?
库是一种可执行的二进制文件,是编译好的代码。
2.为什么要使用库?
提高开发效率。
3.Linux下库的种类
静态库:静态库实在程序编译的时候会被链接到目标代码里面。所以我们的程序运行就不再需要该静态库了。因此编译出来的体积就比较大。静态库以lib开头,以.a结尾。
动态库:(动态库也叫共享库)动态库在程序编译的时候不会被链接到目标代码里面,而在程序运行的时候被载入的,所以我们的程序运行就需要该动态库了。因此编译出来的体积就比较小。动态库以lib开头。以.so结尾。
4.静态库的制作
静态库的制作步骤:
<1>编写或准备库的源代码
<2>将源代码.c文件编译生成.o文件
<3>使用ar命令创建静态库
<4>测试库文件
libmylib.a:库文件名
mylib:库名
5.静态库的使用
如果我们的程序代码用到了库文件里面的函数,我们在编译的时候需要链接库。系统默认会在/lib或者/usr/lib去找库文件。或者在编译的时候我们制定库的路径。
举例:
gcc test.c -lmylib -L .
-l:指定静态库的库名
-L:指定静态库的查找位置。-L . 表示在当前目录下去查找
6.动态库的制作
动态库制作步骤:
<1> 编写或准备库的源代码
<2> 将源码.c文件编译生成.o文件
<3> 使用gcc命令创建动态库
<4> 测试库文件
7.动态库的使用
如果我们的程序代码用到了库文件里面的函数,我们在编译的时候需要链接库。系统默认会在/lib或者/usr/lib去找库文件。或者在编译的时候我们制定库的路径。
举例:
gcc test.c -lmylib -L .
-l:指定动态库的库名
-L:指定动态库的查找位置。-L . 表示在当前目录下去查找
在动态库使用是,系统会默认去/lib,/usr/lib目录下去查找动态函数库,如果我们使用的库不在里面,就会提示错误。解决这个问题有三种方法。
第一种方法:将生成的动态库拷贝到/lib或者/usr/lib里面去,因为系统会默认去这俩个路径下寻找。
第二种方法: 把我们的动态库所在的路径加到环境变量里面去,比如我们动态库所在的路径为/home/test,我们就可以这样添加。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test