0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

由库引生出来的话题

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-14 14:36 次阅读

写在前面 Ⅰ

库,对于编程的人来说,都应该知道。但有很多初学者,及已经工作的朋友对库的理解还处于书本概念阶段,也就是自己没有生成及使用过库。

其实,还有很多朋友不知道printf打印函数是怎么回事,我们在代码中调用printf函数打印数据时,已经调用了标准的“微库”,这里可以参看我的文章:关于printf和scanf在开发STM32中的配置和应用

什么情况下要生成库?

1.代码模块化定型。也就是说模块代码的功能在经过无数次验证,并无误后,方便团队的协同开发,这个时候可以将模块代码生成库。

2.提供SDK给客户开发。这里一般是指源代码对客户不具有公开性的原因,包括某些特有算法、实现特有功能的具体过程等。

生成库的原则?

简单来说就是使代码结构化、模块化、源码不具公开性等。要求代码高内聚、低耦合

Keil、IAR如何生成库? Ⅱ

代码工程生成库的过程只需要对工程进行配置即可,这里再简单讲一下过程,其实在我“系列教程”中有相关内容。

Keil:Project -> Options for Target -> Output 勾选上“Create Library”即可。

IAR:Project -> Options -> General Options -> Output 勾选上“Library”即可。

库在工程的使用方法 Ⅲ

“.Lib”、“.a”这种库大家可以理解为“.c”,只是它已经经过处理而已。我们只需要像添加“.c”文件,将其添加到工程即可。如下图,我们将STM32F10x_StdPeriph_Driver标准外设库生成“STM32F10x_StdPeriph_Driver.a”库,添加到工程中:

静态库和动态库的区别? Ⅳ

上面Keil生成的库是以“.Lib”为后缀的文件,IAR是以“.a”为后缀的文件,你们知道他们是静态库还是动态库吗?

答案是:二者都是静态库。

为什么都是静态库呢? 先看一下静态库和动态库的区别就会知道。

简单的来说二者的区别:

静态库:就是在编译的时候直接将需要的代码连接进可执行程序中去;

动态库:就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。

从上面的描述可以知道,静态库是我们MCU开发者常用的一种,而动态库常用于Linux、Windows等开发场合。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16021

    浏览量

    343675
  • IAR
    IAR
    +关注

    关注

    5

    文章

    319

    浏览量

    36290
  • 模块化
    +关注

    关注

    0

    文章

    302

    浏览量

    21159
  • keil
    +关注

    关注

    68

    文章

    1196

    浏览量

    165331
收藏 人收藏

    评论

    相关推荐

    求助怎么减少labview仿真中生成信号的点数

    这个仿真控制生出来的信号数据点太多了,计算一秒都上万个点了,求求怎么减少点
    发表于 01-19 19:55

    自举电路自举电阻和自举电容的工作原理是什么?

    有射极跟随器衍生出来的自举电路,是怎么得出这个名字的,是否和变频器单电源供电的自举驱动有相似之处?在这个电路中,所谓的自举电阻和自举电容起到了一个什么样的作用?
    发表于 01-11 15:07

    将ADP7102的NC(第4脚)接地的话会导致没有电压输出吗?

    将ADP7102的NC(第4脚)接地的话会导致没有电压输出吗?数据手册上标记的是“NO CONNECT.DO NOT CONNECT TO THIS PIN.”而在做板时已经将其接地,现在测试时没有电压输出,这可能是NC接地导致的吗?通常情况下NC不是可以接地的吗?
    发表于 01-09 07:34

    AD7606的44、45和42脚不接电容的话,会对采样的数据产生影响吗?

    AD7606的44、45和42脚不接电容的话,会对采样的数据产生影响吗?现在我的程序是能检查到busy信号并且数据有转换,但是数据不对,会变化,采样电压2v和3v的数值是一样的,出现着这种情况适合
    发表于 12-14 07:58

    从人生、历史到单片机的话题讨论

    我们来看单片机 的例子,读者可能会担心单片机(又称MCU,或微控制器) 过于专业而无法理解。完全没必要!在这里我们仅借它谈论一下有关时间的话题,顺带提一下单片机系统的概念。
    的头像 发表于 12-05 10:35 290次阅读
    从人生、历史到单片机<b class='flag-5'>的话题</b>讨论

    话题通信接口的定义和运行效果

    ,将驱动相机并发布图像话题,此时的话题数据使用的是ROS中标准定义的Image图像消息; 第二个节点,会运行视觉识别功能,识别目标的位置,这个位置我们希望封装成话题消息,发布出去,谁需要使用谁就来订阅; 第三个节点,订阅位
    的头像 发表于 12-01 15:32 185次阅读
    <b class='flag-5'>话题</b>通信接口的定义和运行效果

    神秘又有趣的话题——芯片引脚顺序!

    亲爱的“芯”朋友,你们有没有发现,每颗芯片上都布满了密密麻麻的引脚,犹如一座迷宫,让人无从下手?今天,我们一起来揭开这个迷宫的神秘面纱,探索一下这个既神秘又有趣的话题——芯片引脚顺序!芯片,这个看似
    的头像 发表于 11-28 09:33 5553次阅读
    神秘又有趣<b class='flag-5'>的话题</b>——芯片引脚顺序!

    我的第一个UVM代码——Hello world

    run_test调用了uvm_test派生出来的testcase(hello_world)。 为什么run_test能够通过字符串\"hello_world\"找到testcase?与宏定义
    发表于 11-03 10:18

    如何使用51单片机通过扬声器将要说的话出来

    如何使用51单片机通过扬声器将要说的话出来
    发表于 10-30 09:02

    Unix和Linux的差异

    摘要:程序员都知道,Linux 不是 Unix,不过二者之间确实存在关系,即 Linux 系统是从 Unix 派生出来的,而 Linux 是一个类 Unix 的操作系统。那么,二者之间具体存在哪些明显的差异呢?
    发表于 09-04 12:42 306次阅读

    聊聊这个有趣的话题:分布式单体

    看似我们得到了很多好处,但我们的开发效率真的得到了提升吗?虽然我们以前一个单体应用启动要3分钟,现在拆分后,一个项目启动30秒,但每次开发调试要同时开好几个项目同时启动?这样的开发体验真的爽到了吗?
    的头像 发表于 08-16 16:08 235次阅读

    先进封装Chiplet的优缺点

    先进封装是对应于先进圆晶制程而衍生出来的概念,一般指将不同系统集成到同一封装内以实现更高效系统效率的封装技术。
    发表于 06-13 11:33 308次阅读
    先进封装Chiplet的优缺点

    在questasim里如何设置和查看种子值呢?

    在systemverilog代码运行中,EDA工具会先给1个随机种子值(seed),所有代码里的随机数都是根据这个初始种子衍生出来的。
    的头像 发表于 05-29 17:50 1193次阅读

    连拓精密气密性检测设备在汽车行业可以测试什么产品?

    因为汽车使用环境与安全性能要求,决定了汽车使用的配件与所衍生出来的一系列产品要达到规定的气密性标准。这时在气密性质量检测环节中就会使用到连拓精密气密性检测设备来检测这些产品,那我们的气密性检测设备在汽车行业中可以测试什么产品呢?
    的头像 发表于 05-25 09:08 268次阅读
    连拓精密气密性检测设备在汽车行业可以测试什么产品?

    关于Paul Stoffregen维护的用于DS1307 RTC的聪明TimeAlarms的问题求解

    我有一个关于 Paul Stoffregen 维护的用于 DS1307 RTC 的聪明 TimeAlarms 的问题。我正在查看 readme.txt 文件,它显然可以在各种不同情
    发表于 05-25 09:01