什么叫库?
库:就是一种可执行的二进制代码,可以加入到某个程序进行执行。
Linux
下有两种库:静态库和共享库
(
动态库
)
静态库
:在进行编译程序时,把静态库中的代码函数内容添加到目标代码程序中,程序在执行时就不需要再额外使用库。
共享库:在进行编译程序时,不会把动态库中的内容添加到目标代码程序中,只是做一个标记,程序在执行也需要动态库,因此程序体积偏小。
1. 静态库的制作
a、把源文件变为二进制文件:
.o
gcc -c xxx.c -o xxxx.o
b、创建静态库,就是把二进制文件
(.o )
制作成库 :
.a
ar crs lib库名.a xxxx.o
c、使用静态库,进行编译可执行程序
gcc -o 可执行程序目标 xxxx.c -L
路径(L.当前位置)
-l
库名
2. 动态库的制作
a、把源文件变为二进制文件:
.o
gcc -Wall -fPIC -c xxxx.c -o xxxx.o
b、创建动态库,就是把二进制文件
(.o)
制作成库:
.so
gcc -shared xxxx.o -o lib库名.so
c、使用动态库,进行编译可执行程序
gcc -o 可执行程序目标 xxxx.c -L路径 -l
库名
因为使用共享库,在执行程序时还是需要共享库
解决办法:
1
、把库加入
/lib
或
/usr/lib
2
、在
LD_LIBRARY_PATH
中加入动态库的路径
3
、在
/etc/ld.so.conf.d/
新建文件(或添加已经存在的文件中)来存储当前动态库的路径,然后
ldconfig
刷新