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

动,静态库

lib.XXX.a-静态库--静态链接(gcc -o test.c -g)

lib.XXXso-动态库--动态链接(默认)

静态库设计

此方法给用户用的两种方法:

1.提供源码,用户直接使用

2.不提供源码,把源码打包成库=库+.h。而对于头文件,其对应的库必须公开,否则头文件无法调用。

静态库本质就是将多个源文件(a.c b.c c.c d.c test.c)编译为(a.o b.o c.o d.o test.o),然后打包链接起来。

形成静态库

lib =libmymath.a(静态库名称libmymath.a)

$(lib):mymath.o(依赖关系)

ar 是生成静态库指令 

输出静态库

 

 使用该静态库

我们发现无法编译,原因在于该头文件不再系统默认路径,也不在当前目录下,系统没找到头文件。

解决方法指定路径:让操作系统在在没找到头文件情况下去指定路径寻找(-I是include简写)

但是却出现了连接式报错,原因在于没找到add的实现。及找不到静态库。原因同样如上

 

通过-L(lib)告诉操作系统静态库的路径,此处因为没指出应 链接哪些库,编译再次失败,头文件不用告诉名称的原因在于main.c内已经包含头文件,不需要再告诉操作系统。

解决方法:-l(link) -lmymath(llibmymath.a去除前缀和后缀才是库名称)

相关文章:

  • 智能生成分析报告系统在危化安全生产监测预警评估中的应用
  • 【麻省理工】《how to speaking》笔记
  • Kubernetes安全
  • 亚矩云手机赋能Vinted矩阵运营:破解二手电商多账号与本地化困局
  • idea 报错:java: 非法字符: ‘\ufeff‘
  • 回归任务与分类任务的区别
  • 合并table
  • Java后端与Vue前端项目部署全流程:从环境配置到Nginx反向代理
  • 【基础篇-消息队列】——详解 RocketMQ 和 Kafka 的消息模型
  • vue组件转html
  • qt常用控件--02
  • 互联网大数据求职面试:从Zookeeper到Flink的技术探讨
  • Docker 永久换源步骤
  • 四核 A53+工业级存储:移远 SC200L 与 pSLC SD NAND 如何重构 T-BOX 性能边界?
  • APO:自动化技术提升大语言模型在各类任务中的表现
  • Python基础之函数
  • 构建轻量级RTSP服务的正确方式:从RFC到工程实践
  • 1.1、CAN总线简介
  • AI+地图打车:如何用机器学习实现小程序订单智能匹配与路径优化?
  • PicHome结合容器化与内网穿透实现跨平台影像管理
  • 网站开发 wenzhou/湖南正规seo优化
  • 泉州住房建设局网站/关键词推广效果分析
  • 网页设计源代码css案例/网络营销的优化和推广方式
  • 热门网站建设加盟平台/百度推广优化怎么做
  • 做推广用那个网站吗/中国万网官网
  • 网站建设平台的分析/网页优化seo公司