静态库:静态库相当于中间文件(.o)的集合,静态库是在链接时使用,将静态库中的程序直接合成到最终的可执行文件中。
windows下表示为: .lib
Linux: .a
动态库(共享库):不可执行的可执行文件(其中没有main函数)
使用动态库的程序运行起来后,动态将动态库加载到内存上执行。
windows: .dll
Linux: .so
静态库的生成过程:*.c 功能代码的源文件
1.将多有的源文件编译生成中间文件(*.o)
eg:gcc -c main.c -o main.o
2.ar crv libxxx.a *.o ----->libymath.a
静态库的使用:
gcc -o main main.c -L(路径) -l(库名)
gcc -c main main.c -L ./lib -lmymath
动态库的生成过程: *.c 功能代码的源文件
gcc -shared -fPIC -o libxxx.so *.c ----->libmymath.so
动态库的使用:
gcc -o main main.c -L(路径) -l(库名)
gcc -o main main.c -L ./so -lmymath
使用动态库的程序在运行时,需要单独搜索并加载动态库文件
1.将动态库拷贝到 /lib /usr/lib 任意一个路径下
2.设置环境变量 LD LIBRARY PATH
export LD LIBRARY PATH=绝对路径
3.修改配置文件 /etc/profile ----->设置LD_LIBRARY_PATH
动态库与静态库的区别:
在同一个工程中,不同文件使用静态库都需将静态库拷贝到自己的文件中,而动态库是直接加载到内存上,所以下一个使用动态库的文件,不需要重复加载。