[C++] 静态链接库和动态链接库的区别
2015-09-13 14:38
295 查看
静态链接库和动态链接库的区别
一、静态链接库
预编译->编译->汇编->链接
Linux:
生成目标文件
g++ -c source.cpp -o source.o
打包成静态链接库
ar -crv source.a source.o
使用静态链接库
g++ test.cpp -L静态链接库目录 -l静态链接库名称没有后缀
二、动态链接库
使用动态链接库是为了规避静态链接库的两个问题。
一个是多个副本的问题,对于静态库都是在编译时刻将其编译到源代码当中,在运行时刻不会再和静态库有任何关系。这样的好处是快,但是造成了空间的浪费
另一个是发布的一致性问题和更新问题,如果是静态库,如果对静态库进行了更新,那么需要重新编译代码,并且提示用户进行下载整个软件,这样会造成很多不变,浪费大量带宽。如果是动态库,只需要更新相应的动态链接库即可,整个软件不需要修改。
Linux平台:
生成目标文件
g++ -fPIC source.cpp -o source.o
动态链接库
g++ -shared source.so source.o
或者合并为一个命令
g++ -fPIC -shared source.so source.cpp
关于在使用中定位动态链接库的位置,需要注意一些问题,默认动态链接库是在/lib 或者 /usr/lib之下的
如果要在其他文件夹之下,需要修改 /etc/ld.so.cache文件
[1] /content/3614369.html
一、静态链接库
预编译->编译->汇编->链接
Linux:
生成目标文件
g++ -c source.cpp -o source.o
打包成静态链接库
ar -crv source.a source.o
使用静态链接库
g++ test.cpp -L静态链接库目录 -l静态链接库名称没有后缀
二、动态链接库
使用动态链接库是为了规避静态链接库的两个问题。
一个是多个副本的问题,对于静态库都是在编译时刻将其编译到源代码当中,在运行时刻不会再和静态库有任何关系。这样的好处是快,但是造成了空间的浪费
另一个是发布的一致性问题和更新问题,如果是静态库,如果对静态库进行了更新,那么需要重新编译代码,并且提示用户进行下载整个软件,这样会造成很多不变,浪费大量带宽。如果是动态库,只需要更新相应的动态链接库即可,整个软件不需要修改。
Linux平台:
生成目标文件
g++ -fPIC source.cpp -o source.o
动态链接库
g++ -shared source.so source.o
或者合并为一个命令
g++ -fPIC -shared source.so source.cpp
关于在使用中定位动态链接库的位置,需要注意一些问题,默认动态链接库是在/lib 或者 /usr/lib之下的
如果要在其他文件夹之下,需要修改 /etc/ld.so.cache文件
[1] /content/3614369.html
相关文章推荐
- C++中的const和define详解
- [C++] static的作用
- windows编程中c语言知识回顾
- C++位操作符总结
- C++ 类操作符重载笔记
- C++Primer第五版 第3章 字符串、向量和数组(练习解答)
- C++_std::bind std::function 高级用法
- Effective C++ 条款55 让自己熟悉Boost
- C++Primer第五版 3.5.3节练习
- C++Primer第五版 3.5.2节练习
- 文《左右c++与java中国的垃圾问题的分析与解决》一bug分析
- 從 C++ 創造者到 Facebook 共同創辦人,你該認識的 12 位工程師
- 第二周项目3(2) 汉诺塔
- C++的函数隐藏、覆盖和重载
- C++基础---面向对象
- C++字符串的使用
- Effective C++——条款34(第6章)
- C/C++ 中的0长数组(柔性数组)
- C++,传递多个参数
- C++兰不达表达式