linux 动态库与静态库制作及使用详解高级深入些

linux 动态库与静态库制作及使用详解高级深入些

ID:6032023

大小:140.93 KB

页数:10页

时间:2017-12-31

linux 动态库与静态库制作及使用详解高级深入些_第1页
linux 动态库与静态库制作及使用详解高级深入些_第2页
linux 动态库与静态库制作及使用详解高级深入些_第3页
linux 动态库与静态库制作及使用详解高级深入些_第4页
linux 动态库与静态库制作及使用详解高级深入些_第5页
资源描述:

《linux 动态库与静态库制作及使用详解高级深入些》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、技巧:Linux动态库与静态库制作及使用详解标准库的三种连接方式及静态库制作与使用方法陈鲁,软件工程师,IBM陈鲁,2010年4月加入IBMCSTL。他熟悉C/C++、bat/sh、XML、Windows/Linuxmakefile、CIM。简介: Linux应用开发通常要考虑三个问题,即:1)在Linux应用程序开发过程中遇到过标准库链接在不同Linux版本下不兼容的问题;2)在Linux静态库的制作过程中发现有别于Windows下静态库的制作方法;3)在Linux应用程序链接第三方库或者其他静态库的时候发现链接顺序的烦人问题。本文就这三个问题针对Lin

2、ux下标准库链接和如何巧妙构建achrive(*.a)展开相关介绍。本文的标签: 应用开发标记本文!发布日期: 2011年11月02日级别: 中级访问情况: 5826次浏览评论: 2 (查看 

3、 添加评论-登录)平均分(15个评分)为本文评分两个要知道的基本知识Linux应用程序因为Linux版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行。1.Linux下标准库链接的三种方式(全静态,半静态(libgcc,libstdc++),全动态)及其各自利弊。2.Linux下如何巧妙构建achrive(*.a),并且如何设置

4、链接选项来解决gcc比较特别的链接库的顺序问题。三种标准库链接方式选项及对比为了演示三种不同的标准库链接方式对最终应用程序产生的区别,这里用了一个经典的示例应用程序HelloWorld做演示,见清单1HelloWorld。整个工程可以在文章末尾下载。清单1.HelloWorld#include#includeusingstd::cout;usingstd::endl;intmain(intargc,char*argv[]){printf("HelloWorld!(Printedbyprintf)");cout<<"

5、HelloWorld!(Printedbycout)"<

6、hread-lrt-ldl灵活度大,能够针对不同的标准库采取不同的链接策略,从而避免不兼容问题发生。结合了全静态与全动态两种链接方式的优点。比较难识别哪些库容易发生不兼容问题,目前只有依靠经验积累。某些功能会因选择的标准库版本而丧失。上述三种标准库链接方式中,比较特殊的是半静态链接方式,主要在于其还需要在链接前增加额外的一个步骤:ln-s`g++-print-file-name=libstdc++.a`,作用是将libstdc++.a(libstdc++的静态库)符号链接到本地工程链接目录。-print-file-name在gcc中的解释如下:-print

7、-file-name=Displaythefullpathtolibrary为了区分三种不同的标准库链接方式对最终生成的可执行文件的影响,本文从两个不同的维度进行分析比较:维度一:最终生成的可执行文件对标准库的依赖方式(使用ldd命令进行分析)ldd简介:该命令用于打印出某个应用程序或者动态库所依赖的动态库涉及语法:ldd[OPTION]...FILE...其他详细说明请参阅man说明。三种标准库链接方式最终产生的应用程序的可执行文件对于标准库的依赖方式具体差异见图1、图2、图3所示:图1.全静态标准库链接方式图2.全动态标准库链接方式

8、图3.半静态(libgcc,libstdc++)标准库链接方式通过上述三图,可以清楚的看到,当用全静态标准库的链接方式时,所生成的可执行文件最终不依赖任何的动态标准库,而全动态标准库的链接方式会导致最终应用程序可执行文件依赖于所有用到的标准动态库。区别于上述两种方式的半静态链接方式则有针对性的将libgcc和libstdc++两个标准库非动态链接。(对比图2与图3,可见在图3中这两个标准库的动态依赖不见了)从实际应用当中发现,最理想的标准库链接方式就是半静态链接,通常会选择将libgcc与libstdc++这两个标准库静态链接,从而避免应用程序在不同Lin

9、ux版本间标准库依赖不兼容的问题发生。维度二:最终生成的可执行文件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。