当前位置: 首页 > news >正文

动静态库的制作

本质上来说库是⼀种可执行代码的⼆进制形式,可以被操作系统载入内存执行。

可分为两种:

静态库:.a(linux)、.lib(windows)
动态库:.so(Linux)、.dll(windows)

静态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候将不再
需要静态库
编译时默认使用的是动态库,因为使用静态库会导致文件的体积变大。

只有在库中找不到动态库.so时才会使用默认使用静态库

静态库生成

这里是Makefile中的脚本程序库名为"my_pow",但是要加上前缀lib以及静态库后缀.a

我们在my_pow.c中已经实现了相关方法,通过gcc -c生成对应的.o文件,即可通过

'ar' 制作静态库

-r replace

-c create

制作完成后我们可以使用ar -tv查看库相关信息

-t  列出静态库中的文件

-v 详细信息

静态库的使用

前面我们说过,我们制作的静态库的库文件名为libmy_pow.a

前缀说明是个库文件,后缀说明是静态库(动态库.so,静态库.a)

在使用时我们需要去掉前后缀,实际上的库为my_pow

-l(小写的L)                指定库文件名(去掉前后缀

-I(大写的i)                指定头文件路径

-L                              指定库文件路径

因为是静态库,所以即使我们在制作好可执行程序后删除掉静态库也是没问题的,因为静态库已经被写在程序里了

动态库

动态库的名字与静态库类似,只不过后缀从.a改成了.so

从.c文件到.o文件时也与上面有点区别,-fPIC为生成“与位置无关码”,生成.o文件时加上即可

最后再用.o文件通过加上-shared指定生成的是动态库即可

此时我们可以看到,动态库已经顺利生成了

不过光是这样还不够,我们还需要指定动态库搜索路径

一是选择将动态库加入系统默认的搜索路径中,例如/usr/lib、/usr/local/lib、/lib64等

二是在环境变量中指定增加动态库搜索路径

像这里我们就增加了在环境变量中增加创建动态库搜索路径让我们的动态库能够被找到

如果我们要增加搜索路径,我们可以这么写

':'作为分隔符,说明我们要创建多个搜索路径,后面的$LD_LIBRARY_PATH则是将原来的内容放在里面,所以此时该环境变量的实际值则为

LD_LIBRARY_PATH=/home/lyl:/home/lyl/test

我们就有以':'为分隔符,增加了两个动态库搜索路径

http://www.xdnf.cn/news/695719.html

相关文章:

  • c++ 拷贝构造函数
  • JVM——Truffle:语言实现框架
  • 【机器学习基础】机器学习入门核心算法:朴素贝叶斯(Naive Bayes)
  • Spring AI 1.0 GA 深度解析:构建企业级AI应用的全栈实践指南
  • Linux的基本指令
  • vscode 终端 PATH 和python pip 不对
  • CSS (mask)实现服装动态换色:创意与技术的完美融合
  • HIS换代升级辅助脚手架:数据清洗、人员信息标准化、电子病历接口标准化、多模态影像接口标准化
  • 三级联动获取省市区
  • 8种常见数据结构及其特点简介
  • 排查Oracle文件打开数过多
  • JAVA 笔记
  • 【超详细教程】零基础本地部署DeepSeek-Coder-v2 16B!Ollama+GPU加速,100%跑通!
  • CCLINKIE转PROFINET:让执行器“丝滑”入网!
  • 脑机新手指南(一):BCILAB 脑机接口工具箱新手入门指南
  • 从新安全法到隐患判定标准:特种设备证件管理政策全梳理
  • vben-admin 2.8.0 版本修改 axios响应处理逻辑
  • MySQL:零基础入门(狂神版)
  • PyTorch安装Cuda版本选择
  • WMS系统选型与实施避坑手册
  • HarmonyOS 5 应用开发导读:从入门到实践
  • C++STL——map与set的使用
  • “顶点着色器”和“片元着色器”是先处理完所有顶点再统一进入片元阶段,还是一个顶点处理完就去跑它的片元?
  • 上传头像upload的简易方法,转base64调接口的
  • Spring AI 系列之使用 Spring AI 开发模型上下文协议(MCP)
  • maven编译时跳过test过程
  • MYSQL备份恢复知识:第六章:恢复原理
  • pythonocc hlr实例 deepwiki 显示隐藏线
  • Linux 系统入门篇四
  • SPEAR开源程序是用于逼真演示 AI 研究的模拟器