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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux下安装mysql-8.0.20

    Linux下安装mysql-8.0.20**Linux下安装mysql-8.0.20**环境介绍操作系统:CentOS7mysql下载地址:https://dev.mysql.com/downloads/mysql/下载版本:mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz卸载mysql查看是否安装过mysql,命令:find/-namemysql如果安装过,进行卸载:删除相关目录:删除配置文件:删除mysql用户和用户组(如果有进程,杀掉在删)卸载完毕!安装mysq

    2022年5月15日
    33
  • 机器人视觉软件工程师_机器视觉工程师能干到多少岁

    机器人视觉软件工程师_机器视觉工程师能干到多少岁  大家好,本人是刚刚入职的视觉工程师,现在已经一年了,也给大家分享一下在这一段时间里,我做了什么,以及学到了什么。对了,虽然我只做了两个月的视觉工程师,但是我已经连续写了12年的日记了,我想把这个好习惯一直延续下去,也算是做个记录。可能没有人看,只做个人消遣吧!2020.9.15  先讲一下我的个人情况吧,大学是在湖南省湘潭市读的,在大四的时候遇到了一个好的老师,领我上了计算机视觉的末班车,为我拨开本来迷茫如雾的未来,在毕业后只身踏入计算机视觉漫漫长征路。其实坦白来讲,我是打算在毕业后做一名

    2022年9月23日
    1
  • WPF是什么_wpf documentviewer

    WPF是什么_wpf documentviewer项目中要用到一个数据分页栏,虽然自己没有实现过,但凭经验感觉它和ListBox/ListView有关。于是去网上搜了下WPF数据分页栏,果然很多实现都用到了ListView。于是拣了一种比较简单的实现学习,其中包含下面代码:ListView.View的标签内出现了GridView。在我印象中Grid是网格式的,而List是列表式的,所以我很好奇两者为什么可以混到一起。当然从类的关系上来看,应该是两者都继承了一个共同的父类。那么为了能使用起来更“自如”,对GridView有个系统的了解,还是有必要学习一

    2022年9月2日
    3
  • 联想Win10安装Ubuntu双系统教程

    联想Win10安装Ubuntu双系统教程前言:最近为了更好的做一名程序员(猿),所以准备装一个双系统,也就是Ubuntu系统,网上坑太多,所以决定自己写一点操作步骤首先看一下我的计算机配置,联想小新700Tip:这里的安装步骤仅仅针对联想Win10改型号或者相关型号,其他品牌型号安装过程可能有所差异,在这里不多说(因为穷,没用过其他的)首先要明确装双系统有一个步骤,在这里分为:(1)下载Ubuntu镜像文件;(2…

    2022年7月24日
    24
  • PyCharm几个常用的快捷键「建议收藏」

    PyCharm几个常用的快捷键「建议收藏」咪哥杂谈本篇阅读时间约为3分钟。1前言PyCharm作为一款Python语言的代码编辑器,在市场上广为人知。尤其是一些工程性项目来说,PyCharm非常友好。实际上,如果你要是了…

    2022年8月29日
    0
  • PhpStorm激活码2024.3.1.1版本最新教程,永久有效激活码,亲测可用,记得收藏

    PhpStorm激活码教程永久有效2024.3.1.1激活码教程-Windows版永久激活-持续更新,Idea激活码2024.3.1.1成功激活

    2025年5月23日
    3

发表回复

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

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