C++ 静态库动态库的一些经验总结「建议收藏」

C++ 静态库动态库的一些经验总结「建议收藏」C++ 静态库动态库的一些经验总结

大家好,又见面了,我是你们的朋友全栈君。

一.静态库

静态库只是将一些c或者cpp文件编译成.o之后打包成一个.a,这个静态库中有所有文件的.o,所有文件的符号链接,函数表。能清楚的查询到需要的函数名字,用到的源文件名字。

查看.a中含有哪些文件

ar t temp.a

查看符号表之类的信息,函数栈

nm temp.a

假设,一个temp.a  一个你自己编写的hello.c  其中hello中引用了temp.a中的函数。你想把.a中的函数做一层转换然后给其他人使用,这时候你可以先解压出.a中的所有.o然后在加上你编写的hello.c重新打包成一个新的hello.a给其他人使用。

ar x temp.a  //从存档中提取成员

ar cru temp.a *.o//重新创建一个归档,当前目录下所有的.o

ranlib temp.a// 打包成.a

还有一中方式:

直接向.a中添加某个.o文件

ar -q temp.a hello.o

二.使用静态库方法

1.在makefile中包含其头文件 -I xxx/include

2.在makefile中链接时间直接写上.a的全路径   xxx/temp.a

 

三.动态库。

1.动态库的创建

*******确保所有的文件编译的过程中都使用到-shared -fPIC 选项,否则出错。

 gcc -c  hello.c -fPIC -o hello.o

 gcc -shared -fPIC hello.o -o libhello.so

 

2.动态库的使用

1.首先makefile中包含其头文件。

2.加上-L 指定库的路径 -L xxx/lib

3.加上编译选项-lhello   注意需要去掉之前的lib

 

查看某个动态库依赖其他的so 可以直接对其ldd 就能查看到

 

转载于:https://www.cnblogs.com/xlsss159/p/11090969.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106751.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu安装qt4.8.7_ubuntu18.04安装教程

    ubuntu安装qt4.8.7_ubuntu18.04安装教程文章目录更新源安装qt更新源最好用清华的源,比较快$sudoapt-getupdate安装qt$sudoapt-getinstallqt*

    2022年10月15日
  • pycharm2020.2.3专业版安装教程_pycharm部署项目到服务器

    pycharm2020.2.3专业版安装教程_pycharm部署项目到服务器利用pycharm2021学生教育版远程连接linux服务器上的代码并进行调试。

    2022年8月29日
  • bizcharts图表下载

    bizcharts图表下载一、前端直接以图片方式下载到本地https://www.jianshu.com/p/df18dce77299二、前端将图片传递给后端,后端做一定处理后下载https://www.jianshu.com/p/52555efe0ed1

    2022年10月31日
  • XGBoost简介

    XGBoost简介本文据此对XGBoost的原理做简单的介绍…XGBoost[1]是2014年2月诞生的专注于梯度提升算法的机器学习函数库,此函数库因其优良的学习效果以及高效的训练速度而获得广泛的关注。仅在2015年,在Kaggle[2]竞赛中获胜的29个算法中,有17个使用了XGBoost库,而作为对比,近年大热的深度神经网络方法,这一数据则是11个。在KDDCup2015[3]竞赛中,排

    2022年6月1日
  • 亿图图示用户名和密钥激活码【最新永久激活】2022.02.13

    (亿图图示用户名和密钥激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
  • 【Unity开发小技巧】打包IOS版本须知流程(移动)

    【Unity开发小技巧】打包IOS版本须知流程(移动)Unity是个开放性的平台,打包时也可以选择多种打包类型,几乎包含了所有的平台,目前主流Android,iOS平台,Android平台可以直接使用Unity自行打包,但iOS平台需要借助Mac电脑进行打包,本博客就iOS打包进行一个简单的说明,从开发到上线AppStore的所有流程。准备Mac电脑一台,苹果开发者账号一个一:unity打包Ios,Xcode工程打开Mac上的Unity,假设现在已经是开发完毕的状态,直接进行打包打开之后直接点File-BuildSettings然后将你的当..

    2022年6月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号