静态动态库
.. | 本质 | 优点 |
---|---|---|
动态库 | 共享库的代码是在可执行程序运行时才载入内存 | 1.省空间2.bug修复利于维护3.开发效率 |
静态库 | 静态库被链接后库就直接嵌入可执行文件 | 1.速度快 |
linux静态动态库制作和使用
动态库步骤
- 生成.so文文件 |…加-fPIC和-shard和文件名需libxxx.so
1.
1. gcc -fPIC -o hello.o -c hello.c 成目标文件
2. gcc -shared -o libhello.so hello.o
- 或一句 gcc -fPIC -shared -o libhello.so hello.c
- 编译链接动态库到程序中
- 命令:gcc main.c -L . -lhello
- -L指定库路径 -l指定库名
- -Wl,-rpath: 记录以来so文件的路径信息,将动态库路径添加到运行时查找路径中(不知道是不是没用过)
- 执行测试 添加动态库执行路径 (命令ldd a.out 检测库路径)
- 环境变量 export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:.”
- 配置文件/etc/ld.so.conf (root权限 全局配置不用)
静态库步骤
- 1.生成.a文件
- 命令1 gcc -c hello.c
- 命令2 ar rv libhello.a hello.o
- 解释:rv 是ar的命令选项; r 代替库中现有的文件或者插入新的文件 ;v 输出详细信息
- 链接和执行跟动态库基本一样