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

    文章

    17135

    浏览量

    351027
  • IAR
    IAR
    +关注

    关注

    5

    文章

    350

    浏览量

    36669
  • 模块化
    +关注

    关注

    0

    文章

    331

    浏览量

    21344
  • keil
    +关注

    关注

    68

    文章

    1212

    浏览量

    166851
收藏 人收藏

    评论

    相关推荐

    ADS1278EVM-PDK不给SCLK信号的话,OUT1处没有波形出来,怎么解决?

    ADS1278EVM-PDK上发现,我不给SCLK信号的话(即把R40电阻拿掉)(此时CLK有信号),OUT1处没有波形出来呢。。忘专家指点,谢谢。
    发表于 12-23 07:05

    宠物自动喂食器主控芯片DSH3186

    宠物在现代人的生活中占有极大的比重,甚至愿意将宠物当做孩子精细地养活。也正因为如此,宠物而衍生出来的产业链涉及方方面面,不但解决了宠物主人的烦恼,也给宠物们带来更为幸福的生活。其中,宠物自动喂食
    的头像 发表于 11-01 16:26 303次阅读

    星闪的崛起,会对定位市场产生什么影响?

    最近几年,国内的无线通信技术领域,一直有一个“靓仔”,吸引着流量的风口,那就是星闪。在AIoT产业圈中,大家基本都听过星闪,但星闪这个技术以及衍生出来产业到底是什么样的,或许很多人就不是很清晰。星闪
    的头像 发表于 11-01 08:05 482次阅读
    星闪的崛起,会对定位市场产生什么影响?

    重新认识什么是防水透气膜

    ?防水透气膜是膜分离技术所衍生出来的一种高分子材料,是一种用特殊工艺制造的,具有选择透过性的薄膜。防水透气膜可以让一些小于防水透气膜孔径的气体透过,而不让大于防水透
    的头像 发表于 10-13 08:02 221次阅读
    重新认识什么是防水透气膜

    OPA548如果4脚(V-)接GND的话,电压最低能输出来多少?能到0V吗?

    想确定一下OPA548如果4脚(V-)接GND的话,电压最低能输出来多少,能到0V吗,看手册写的是轨对轨的
    发表于 08-28 08:27

    I2S MCLK没有信号的原因?

    ,i2s_mclk_gpio_select()这个函数在官方的IDF和ADF的文档里都找不到。上面这些都讲的模糊不清,不一定能用,有没有人明确用I2S实际产生出来MCLK,说明下如何用。就为来产生
    发表于 06-19 06:37

    ADuC845来画PCB的话,需要引出来哪几个脚来烧录?TXD和RXD吗?

    我需要买什么下载器来下载吗?如果我使用这个芯片来画PCB的话,需要引出来哪几个脚来烧录?TXD和RXD吗?
    发表于 05-31 06:09

    STM32L073VZT6 ADC VRefint读出来的数据不对是怎么回事?

    );HAL_ADCEx_EnableVREFINT(); 2.当使用扫描模式读的话,读出来的数据是递增的. 3.当使用sigle模式的话,读出来数据是稳定的,但是好像ADC输入达到1.
    发表于 05-09 08:09

    华为申请注册“望”商标

    华为技术有限公司近日申请注册了多枚商标,其中包括“望”、“看”、“众”、“INVISOL”、“INNOWARD”等,涵盖了科学仪器、运输工具等多个国际分类。这些商标的申请引发了市场对华为在智能汽车领域的布局和战略的关注。
    的头像 发表于 01-30 09:56 790次阅读

    华为申请“望”等多枚运输工具商标

    另据了解,深圳望智能技术有限公司已于今年1月16日正式成立,其注册地为华为深圳总部大楼,华为技术有限公司全资持股。值得注意的是,这间新公司华为车BU部门负责运作。
    的头像 发表于 01-29 13:52 636次阅读

    单片机变量存储大小什么决定?

    最近看到群友在讨论【单片机变量存储大小什么决定?】的话题
    的头像 发表于 01-26 10:11 671次阅读
    单片机变量存储大小<b class='flag-5'>由</b>什么决定?

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

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

    怎么简单实现Labview读取的串口数据自增写入mysql5.7数据中?

    怎么简单实现Labview读取的串口数据自增写入mysql5.7数据中? 已实现:串口数据的接收处理 mysql5.7的安装(已测试数据正常运行) 愿付费解决此问题(QQ:84295699)感谢
    发表于 01-11 22:05

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

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

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

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