库是一种可执行代码的二进制形式。可以被操作系统载入内存执行。
一般分为两种库:静态库和动态库。
二者的不同之处在于代码的载入时刻不同。
当程序在编译的时候,静态库会被连接到目标代码中,这样程序的体积会很大。
动态库会在程序运行的时候被载入内存。库可以实现代码的复用。
共享库的好处是 不同的应用程序调用同一个动态库时,在内存中仅有一个共享库的实例。
在编程的时候,我们往往喜欢模块化的思想,将各种
函数或者数据结构打包成静态库或者动态库,在以后编程的时候
如果需要引用,只需用加上库进行编译即可。
打包命令:
制作静态库:
gcc -c fun.c -o fun.o
ar rcs libfun.a fun.o
gcc main.c -o main -L. /* 代表路径 */ -lfun
制作动态库:
gcc -fPIC -c fun.c -o fun.o
gcc -shared -fPIC -o libfun.so fun.o
gcc main.c -o main -L. -lfun
最后必须将库加入到环境变量 有三种方法:
1.export LD_LIBRARY_PATH=$(PWD);
2.将动态库加入到/lib 或 /usr/lib 下,ld默认能找到
3. 如果在其他目录中,将其加入到 /etc/ld.so.cache
加入方法:vim /etc/ls.so.cache 在该文件中加入路径
运行 ldconfig 该命令用于重建/etc/ld.so.cache