动静态库和编译链接简述

1.静态库

动静态库的本质实际上就是可执行的二进制形式,在我们的 linux 和 windows 里面的呈现出来的形式,后缀是有所差别的;

下面展示的就是不同的操作系统的后缀名字的区别,以及我从网上找的,大家可以回品势遇到的一些问题;

其实这个 dll 之类的文件在我们的日常的软件安装包里面是存在的,只不过我们更多情况下使用的还是这个 exe 之类的,其他的大部分小白都看不懂,也不会去关注这些事情,但是实际上他是和我们息息相关的;

静态库文件,也就是.a 文件,实际上是多个.o 文件打包形成的这个归档文件;

.o 文件是编译之后形成的文件,静态库可理解成为是.o 文件的即可,是编译之后的文件的代码库;

2.动态库

动态库和静态库没有太大的区别,基本使用的方式都是一样的;

动态库不是编译的时候被加载,而是执行的时候操作系统进行加载到内存里面去;

动态库在系统运行的时候会被加载,但是系统需要找到这个动态库相关的文件,具体的查找方法如下所示:

  1. 1.将库文件放在标准系统目录中(如/usr/lib)
  2. 2.创建软链接到标准目录。
  3. 3.设置环境变量 LD LIBRARY PATH 来添加自定义路径
  4. 4.使用 ldconfig 更新缓存,使系统快速查找。

动态库打包盒静态库基本一致,就是需要添加一下这个 share 参数表示这个是共享使用的;

3.编译链接简述

编译器编译之后形成的.o 文件,.o 打包可以形成这个静态库,链接的时候就是.o 文件和库的链接的过程形成可执行的程序;

动静态库和.o 文件都是 ELF 格式的,因此这个链接的过程本质上就是这个 ELF 文件格式里面的这个 section 字段的合并的过程;

相关推荐
且从容.2 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道3 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.5 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落7 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨7 小时前
WSL2的安装与使用
linux·wsl
微小的鱼7 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng8 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮8 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky20 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默20 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu