静态库和动态库的使用
2013-08-14 23:13
190 查看
静态库和动态库的创建
静态库在程序编译的时候会被连接到目标文件中,程序运行时不再需要该静态库。
动态库在程序编译时并不会连接到目标文件中,而是在程序运行时才会装入,因此程序运行时还是需要动态库存在。
程序独立性较强,只要编译好之后,就不在需要库文件。
2) 动态库
空间占用小, 方便升级,程序升级可以只升级库文件,而程序框架保持不变; 可以通过动态库实现进程之间的数据共享; 可在代码中实现动态库加载的控制; 不同程序调用相同的库,在内存中只需要一份该库的实例。
当然这两个库都有一个共同优点,就是保护了软件的安全性,隐藏了源代码。
空间占用较大, 升级需要整个程序重新编译连接。
2) 动态库
对动态库的依赖较强,无论是在编译还是运行时,都可能由于环境配置不正确导致失败。
-L 指定你要连接的库的目录在哪里, -l 指定你要连接的库的名字
当然你也可以将你生成的库放在系统默认库目录下,如/usr/lib
2) 编译时这样使用 gcc main.c libxxxx.so
3) gcc main.c -L. -lxxxx
2) 修改环境变量export LD_LIBRARY_PATH=你库文件的位置
3) 添加/etc/ld.so.conf.d/*.conf 然后调用ldconfig 刷新库文件加载目录
可以使用这两个命令查看 环境变量
printenv LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
2. ldd
可以使用这个命令查看,某个可执行程序使用了那些动态库。
一.概述
什么是库? 说到底库就是一种可执行代码的二进制文件,但是它本身不能执行。静态库在程序编译的时候会被连接到目标文件中,程序运行时不再需要该静态库。
动态库在程序编译时并不会连接到目标文件中,而是在程序运行时才会装入,因此程序运行时还是需要动态库存在。
二.静态库和动态库的区别
1. 优点
1) 静态库程序独立性较强,只要编译好之后,就不在需要库文件。
2) 动态库
空间占用小, 方便升级,程序升级可以只升级库文件,而程序框架保持不变; 可以通过动态库实现进程之间的数据共享; 可在代码中实现动态库加载的控制; 不同程序调用相同的库,在内存中只需要一份该库的实例。
当然这两个库都有一个共同优点,就是保护了软件的安全性,隐藏了源代码。
2. 缺点
1) 静态库空间占用较大, 升级需要整个程序重新编译连接。
2) 动态库
对动态库的依赖较强,无论是在编译还是运行时,都可能由于环境配置不正确导致失败。
三.如何生成静态库和动态库
1. 如何生成静态库
ar crs libxxxx.a (xxxx是库的名字,其余是固定格式) xxx.o2. 如何生成动态库
gcc -fPIC -Wall xxxx.c -shared -o libxxxx.so四.如何使用库
1. 编译时如何使用静态库
gcc main.c -L. –lxxxx-L 指定你要连接的库的目录在哪里, -l 指定你要连接的库的名字
当然你也可以将你生成的库放在系统默认库目录下,如/usr/lib
2. 编译时如何使用动态库
1) 将你生成的库放入系统库目录下2) 编译时这样使用 gcc main.c libxxxx.so
3) gcc main.c -L. -lxxxx
3. 执行程序时如何使用动态库
1) 将你生成的库放入系统库目录下2) 修改环境变量export LD_LIBRARY_PATH=你库文件的位置
3) 添加/etc/ld.so.conf.d/*.conf 然后调用ldconfig 刷新库文件加载目录
五.相关指令
1. printenv echo可以使用这两个命令查看 环境变量
printenv LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
2. ldd
可以使用这个命令查看,某个可执行程序使用了那些动态库。
相关文章推荐
- 【Qt】Qt动态库和静态库的创建和使用
- Unix高级编程:环境变量、静态库、动态库制作和使用、gdb调试工具
- HelloWorld CMake Demo 03:CMake中构建静态库与动态库及其使用
- Linux下动态库和静态库的生成和使用
- linux关于静态库与动态库的使用_笔记
- 聊聊Linux下的静态库与动态库的生成与使用
- Linux 下 Gcc 生成和使用静态库和动态库详解
- Linux下Gcc生成和使用静态库和动态库详解(转)
- android开发 NDK 编译和使用静态库、动态库
- Windows静态库和动态库的创建和使用
- Windows静态库和动态库的创建和使用
- VC++动态库和静态库创建与使用
- Linux下静态库和动态库的创建和使用
- Qt 中动态库(.so)静态库(.a)的使用
- Windows静态库和动态库的创建和使用
- C语言学习笔记--动态库和静态库的使用
- linux如何使用gcc生成静态库和动态库
- 关于VS2013下制作和使用静态库和动态库
- GCC动态库和静态库混合使用
- 技巧:Linux 动态库与静态库制作及使用详解