静态库和动态库的使用

关于库
================
1,静态库和动态库
1.1 静态库:书店(卖出去) (优点:速度稍快,不依赖库 缺点:浪费存储空间)
1.2 动态库:图书馆(借用) (缺点:速度稍慢,依赖于库 优点:节省大量空间)(更常用)

2,制作静态库:(以example1.c、example2.c,假设这些都是不含main函数的代码)
gcc example1.c -o example1.o -c
gcc example2.c -o example2.o -c
ar rcs libxxx.a example1.o example2.o (将example1.o和example2.o放到libxxx.a中)

3,制作动态库:
gcc example1.c -o example1.o -c
gcc example2.c -o example2.o -c
gcc -shared -fPIC -o libyyy.so example1.o example2.o (将example1.o和example2.o放到libyyy.so中)


4,使用库文件:(假设main.c代码中使用了example1.c和example2.c的代码)
gcc main.c -o main -L库所在路径 -lxxx
gcc main.c -o main -L库所在路径 -lyyy

注意:
使用静态库编译的程序,可以不依赖于库直接运行。
使用动态库编译的程序,运行时,必须确保程序可以找到该动态库:
1. 将该动态库直接放置到系统的标准库路径下(比如/lib 、/usr/lib)
2. 将库所在路径设置到环境变量LD_LIBRARY_PATH中: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库所在路径

原文地址:https://www.cnblogs.com/defen/p/5186701.html