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

linux C语言中的动态库 静态库说明

静态库

gcc -fpic -c add.c sub.c  这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接)

ar rcs mymath.a add.o sub.o 将编译好的文件编译成.a静态库用于调用

在使用中 gcc main.c -I../include ../lib/mymarh.a -0 mytest

需要这个函数的声明放在include文件下,以及对应的静态库

调用静态库的时候需要头文件 + 静态库文件 生成可执行文件

动态库

在linux中叫做共享库有三个文件名:real name \soname\linker name

gcc -gcc  -fpic -c add.c sub.c  这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接)

gcc -shared -WL, -soname,libmath.so.1 -0 libmath.so.1.0.1  add.o sub.o

其中soname: libmath.so.1 

realname:ibmath.so.1.0.1

生成了动态库:想要使用这个动态库需要让linux知道这个动态库的位置

sudo vim /etc/ld/so.conf 打开这个配置文件在其中加入动态库的路径(到这个文件的所在目录即可) sudo ldconfig -v 更新一下共享库的路径。

最后gcc -I.../include main.c ../lib/libmath.so.1 -0 myapp

在修改动态库之后不需要重新编译这个可执行文件(当然需要重新生成一下这个动态库)

gcc  -fpic -c add.c sub.c 

gcc -shared -WL, -soname,libmath.so.1 -0 libmath.so.1.0.1  add.o sub.o

(动态库调用的时候才链接,因此修改动态库不影响原始文件的调用)

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

相关文章:

  • Flash烧录速度和加载配置速度(纯FPGA ZYNQ)
  • 解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
  • Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型
  • N2语法 強調、限定
  • OpenAI 即将推出 GPT-5:开启多模态、持续记忆对话新时代
  • 《前端面试题:CSS预处理器(Sass、Less等)》
  • 嵌入式开发之STM32学习笔记day20
  • vue-19(Vuex异步操作和变更)
  • 人工智能-Chain of Thought Prompting(思维链提示,简称CoT)
  • [GESP202412 五级] 奇妙数字 题解
  • 《操盘实战》速读笔记
  • 元素 “cas:serviceResponse“ 的前缀 “cas“ 未绑定
  • CppCon 2014 学习:CHEAP, SIMPLE, AND SAFE LOGGING USING C++ EXPRESSION TEMPLATES
  • 专业级PDF转CAD解决方案
  • 如何屏蔽端口
  • nvidia系列教程-agx-orin安装ros
  • STM32 智能小车项目 两路红外循迹模块原理与实战应用详解
  • [论文阅读] 软件工程 | 量子计算如何赋能软件工程(Quantum-Based Software Engineering)
  • SSL安全证书怎么安装?
  • Python爬虫实战:研究RoboBrowser库相关技术
  • 电子电器架构 --- OTA测试用例分析(上)
  • 最小硬件系统概念及其组成
  • 抑郁症患者数据分析
  • ros2--图像/image
  • Rust 学习笔记:关于智能指针的练习题
  • 6.RV1126-OPENCV 形态学基础膨胀及腐蚀
  • 筑牢企业网管域安全防线,守护数字核心——联软网管域安全建设解决方案
  • 【目标检测】backbone究竟有何关键作用?
  • 一个小小的 flask app, 几个小工具,拼凑一下
  • 对抗性提示:大型语言模型的安全性测试