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

【Linux】基础IO_4

文章目录

  • 六、基础I/O
    • 4. 动静态库
  • 未完待续


六、基础I/O

4. 动静态库

既然我们能够成功创建静态库了,接下来我们将这个代码打包成动态库:
在这里插入图片描述

shared: 表示生成共享库格式
fPIC:产生位置无关码(position independent code)
动态库库名规则:libxxx.so

我们这里在Makefile里面实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
- L 命令就是告诉编译器我们链接的库在哪个路径下。
我们可以在Makefile里:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以给别人使用代码时,直接给对方发送这个压缩包即可。
在这里插入图片描述
在这里插入图片描述
因为我之前编译的时候只是告诉了编译器我们的链接文件和头文件在哪,现在是运行当中,操作系统并不知道链接文件在哪。所以我们应该怎么解决呢?我们有4种做法:①直接将动态链接库拷贝到系统中。②将不在系统默认库搜索路径下的库路径添加到环境变量 LD_LIBARAY_PATH 中。③通过软链接方式在系统库目录里面添加同名目录。④通过配置文件即可

如果我们同时提供动态库和静态库,gcc默认使用的是动态库。如果我们非要静态链接,我们必须使用static选项。如果我们只提供静态链接,那么程序会对这个库进行局部静态链接,程序的其他库仍可能是动态链接的。如果我们只提供动态库,强制使用静态链接则会发生链接报错。

动态库加载后,会被映射到进程的共享区中。 所有系统进程中公共的代码和数据,只需要在物理内存中存在一份即可。


未完待续

http://www.lryc.cn/news/379915.html

相关文章:

  • C++模板类原理讲解
  • scratch编程03-反弹球
  • postgresql数据库进阶知识
  • 关于HTTP劫持,该如何理解、防范和应对
  • System.Data.OracleClient.OracleException:“ORA-12571: TNS: 包写入程序失败
  • saas产品运营案例 | 联盟营销计划如何帮助企业提高销售额?
  • 模式分解算法-满足3NF的无损且保持函数依赖的分解算法、满足BCNF的无损连接分解算法
  • 荷兰与法国战平,双方能携手出现?
  • 数据可视化实验二:回归分析、判别分析与聚类分析
  • FL论文专栏|设备异构、异步联邦
  • 【Java毕业设计】基于JavaWeb的礼服租赁系统
  • 代码随想录训练营Day 66|卡码网101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
  • 根据状态转移写状态机-二段式
  • PyTorch C++扩展用于AMD GPU
  • Hadoop archive
  • R语言——R语言基础
  • VFB电压反馈和CFB电流反馈运算放大器(运放)选择指南
  • elasticsearch安装(centos7)
  • Java高手的30k之路|面试宝典|精通JVM(二)
  • JVM专题六:JVM的内存模型
  • 学习java第一百零七天
  • k8s上尝试滚动更新和回滚
  • GitHub Copilot 登录账号激活,已经在IntellJ IDEA使用
  • 进程知识点(二)
  • 【线性代数】【一】1.6 矩阵的可逆性与线性方程组的解
  • 基于大型语言模型的全双工语音对话方案
  • Spring Boot集成Minio插件快速入门
  • 【C++新特性】右值引用
  • 信息安全基础知识(完整)
  • QT