静态库与动态库的区别以及优缺点,在linux环境下配置静态库与动态库
来源:互联网 发布:知乎 性观念 编辑:程序博客网 时间:2024/05/01 20:19
注意我们这里主要讨论在linux环境下的区别
我们大家都知道函数的库分为两种一个是静态库另一个是动态库
库文件:
静态库 共享库(动态库)
半成品 零件半成品
Linux .a .so
Windows .lib .dll/.DLL
使用时机 链接过程 运行过程(将动态库加载到磁盘中单独执行)
链接过程 将库里的东西打包到了库文件,一旦生产静态库可以没有
他们两的主要区别是在使用的时机不同:
在动态库只是链接了地址一个符号, 静态库在链接是就进行了打包。
链接的过程再去寻找单独去加载内存中。
.o也是二进制文件的集合,相当于一个包是静态中生成的编译文件,只是查看了语法什么的错误是.c的中间文件
动态库是通过gcc生成不可单独执行的可执行文件,如果其它文件调用可以单独执行
静态库的优缺点:
优点:他编译后执行不需要外部的函数库支持,因为所有的函数都已经被编译进去了。
缺点:如果库函数改变,那就得重新编译。
动态库的优缺点:
优点:动态函数库所产生的可执行文件比较小,动态库的改变不会影响到你的程序,所以在升级会比较方便。
缺点:因为库函数没有整合进你的程序,而是程序运行时动态的申请调用,所以程序的运行环境中必须提供相应的库。
下来我们一起看看如何配置静态库与动态库
生成静态库:
gcc -c *.c --> *.o
ar crv libxxx.a *.o-->libxxx.a
gcc -o main main.c -L(path) -lxxx xxx是名称 path是路径
取绝对路径用=$(pwd)
生成动态库:
gcc -shared -fPIC -o libxxx.so *.c 除了main.c
gcc -o main main.c -L. -lxxx
修改环境变量LD_LIBRARY_PATH: export LD_LIBRARY_PATH=最好是绝对路径
2.将生成的动态库拷贝到默认加载路径下: /lib /user/lib
- 静态库与动态库的区别以及优缺点,在linux环境下配置静态库与动态库
- 静态库与动态库的区别与优缺点
- linux下的静态库与动态库的区别
- linux下的静态库与动态库的区别
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- 动态库与静态库优缺点比较
- linux下动态库与静态库
- Linux下动态库与静态库
- Linux下动态库与静态库
- 7、IO库
- Spring MVC DispatcherServlet的初始化
- P3213【USACO 2015 Jan Gold】牧草鉴赏家
- 排序的稳定与不稳定
- MySQL主从复制和读写分离的搭建
- 静态库与动态库的区别以及优缺点,在linux环境下配置静态库与动态库
- 程序猿与艺术的碰撞
- Sending signal. PID: 8561 SIG: 9
- java中NIO和IO的区别
- LintCode Longest Common Subsequence(最长公共子序列长度,动态规划入门题)
- 练习三(第二周)
- 【USACO 2015 Jan Gold】强连通分量+最长路
- Django缓存系统
- HDFS启动过程了解