【浅学Linux】动态库与静态库的封装与使用
创始人
2024-04-07 11:52:55
0

朋友们好,这里简单介绍一下LINUX学习中关于动态库与静态库的理解,以及站在封装和使用的角度去介绍是如何封装的?如何使用的?

文章目录

  • 一:动态库与静态库的理解
  • 二:静态库
    • 2.1:静态库的使用
    • 2.2:静态库的封装
  • 三:动态库
    • 3.1:动态库的使用
    • 3.2:动态库的封装

一:动态库与静态库的理解

  • 静态库:程序在编译链接的时候把库的代码链接拷贝到可执行文件中,程序运行的时候将不再需要静态库。
  • 动态库:程序运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

我们先来理解几个问题:
1️⃣:库里面需不需要main函数?
不需要!

2️⃣:什么是链接?
就是把所有的.o文件链接形成一个可执行程序。

3️⃣:将我的所有.O文件给别人,别人可以使用吗?
可以!

4️⃣:你在使用库的时候,需要用到什么?
库文件和头文件。

二:静态库

2.1:静态库的使用

gcc 或者g++ 只认识系统库,不认识其他第三方库,所以我们想要使用对应的静态库的话,怎么做呢?
方式一:
库的安装! 也就是将对应的头文件和库文件拷贝到系统路径下!
方式二:
指定路径, 大写的-i 头文件路径 大写的-L 库路径, 小写的l指定库名!
在这里插入图片描述

2.2:静态库的封装

在makefile中,根据对应的依赖关系以及依赖方法生成对应的.a文件和.O文件!
在这里插入图片描述
ar是gnu归档工具,rc表示(replace and create)。
总结一下就是将源文件翻译成.O文件以后把所有的.O文件打包起来即可!

三:动态库

3.1:动态库的使用

编译选项:

  • I:链接动态库,只要库名即可(去掉lib以及版本号)。
  • L:链接库所在的路径。
    示例:gcc main.o -o main -L. -lhello

方式一:
库的安装! 也就是将对应的头文件和库文件拷贝到系统路径下!
方式二:
导入环境变量的方式, 程序运行的时候,会在环境变量中查找自己需要的动态库路径–LD_LIBRARY_PATH。

关键点:我们要想使用动态库,一定要让进程找到对应的静态库,因为程序和动态库是分开加载的,属于运行时找库!

3.2:动态库的封装

  • shared:表示生成共享库格式。
  • fPIC产生位置无关码
  • 库名规则:libxxx.so

示例:
在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...