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
    +关注

    关注

    147

    文章

    19107

    浏览量

    403210
  • IAR
    IAR
    +关注

    关注

    5

    文章

    414

    浏览量

    38663
  • 模块化
    +关注

    关注

    0

    文章

    359

    浏览量

    22791
  • keil
    +关注

    关注

    69

    文章

    1231

    浏览量

    173116
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于冷却的话题:手动控制 5V PWM 风扇,通过脚本控制,并通过内核自动控制

    冷却的话题已经多次讨论过。有些人认为风扇辅助冷却是必要的,其他人发誓被动冷却还有一些人认为这个话题被高估了,并认为没有必要冷却 VF2。关于这个问题的不同意见是正常的,也完全没问题。在这里,我只想
    发表于 03-18 07:13

    一个电梯拽主机多少块强力磁钢?

    电梯拽主机通常电机、齿轮和制动器等部件组成,用于提供电梯运行时的动力和控制,在电梯拽主机中,强磁钢一般指永磁体,它们在电机中扮演重要角色,用于产生磁场以驱动电机运转或控制制动器的释放。一个电梯
    的头像 发表于 03-12 15:51 114次阅读
    一个电梯拽<b class='flag-5'>引</b>主机多少块强力磁钢?

    芯源有KiCAD的元件吗?

    一直以来都是用免费开源的KiCAD画板子的,不知道芯源有没有做自己芯片的KICAD。 如果有的话,发个贴分享分享啊,我去下载。
    发表于 01-27 14:48

    IEEE 802.11af 与空白频谱无线技术的话题

    IEEE 802.11af 与空白频谱无线技术的话题
    的头像 发表于 12-14 15:12 1902次阅读

    求助论坛内各位大佬给准实习生出出招

    使用C语言,最近有在刷C语言八股文; 2.熟练设置 使用51、STM32片上外设,最近也在复习片上外设的知识点; 3.标准和HAL(CubeMX)都会使用; 4.会画板子,但是由于偏好软件所以硬件
    发表于 11-30 12:11

    第三届望车联网安全大会圆满结束

    2025年10月18日,深圳望智能技术有限公司(以下简称“望”)在东莞举办“第三届望车联网安全大会”。
    的头像 发表于 10-21 09:32 865次阅读

    广汽集团亮相金砖国家媒体智高端论坛

    近日,新华通讯社联合巴西通讯公司共同主办的金砖国家媒体智高端论坛在巴西里约热内卢举行,来自包括金砖成员国及伙伴国在内的36个国家近150家媒体、智、政府机构和企业以及中美洲议会等地区组织的250余名代表出席论坛,共话金砖国
    的头像 发表于 07-24 17:32 981次阅读

    数据数据恢复—服务器异常断电导致Oracle数据故障的数据恢复案例

    Oracle数据故障: 某公司一台服务器上部署Oracle数据。服务器意外断电导致数据报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据
    的头像 发表于 07-24 11:12 825次阅读
    数据<b class='flag-5'>库</b>数据恢复—服务器异常断电导致Oracle数据<b class='flag-5'>库</b>故障的数据恢复案例

    GUI Guider全新优化方案GUI xTurbo-VeloRender初体验:基于i.MX RT平台的LVGL渲染能力突破

    ,并在GUI Guider V1.9.1及以后版本工具中支持基于该技术方案不断衍生出来的最新成果。 该技术方案旨在将恩智浦在GUI领域深耕多年的经验,结合自身的MCU控制器IP底层技术,转化为能够显著提升用户GUI显示体验的解决方案。而此次更新将包含首个优化成果VeloRender方案,旨在革
    的头像 发表于 07-10 09:21 3983次阅读
    GUI Guider全新优化方案GUI xTurbo-VeloRender初体验:基于i.MX RT平台的LVGL渲染能力突破

    数据数据恢复—SQL Server数据被加密如何恢复数据?

    SQL Server数据故障: SQL Server数据被加密,无法使用。 数据MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 816次阅读
    数据<b class='flag-5'>库</b>数据恢复—SQL Server数据<b class='flag-5'>库</b>被加密如何恢复数据?

    AD封装安装教程

    电子发烧友网站提供《AD封装安装教程.pdf》资料免费下载
    发表于 06-19 15:35 6次下载

    SQLSERVER数据是什么

    SQL Server 是微软公司开发的一款 关系型数据管理系统(RDBMS) ,用于存储、管理和检索结构化数据。它是企业级应用中广泛使用的数据解决方案之一,尤其适用于Windows平台,但也
    的头像 发表于 05-26 09:19 1286次阅读

    MySQL数据是什么

    MySQL数据是一种 开源的关系型数据管理系统(RDBMS) ,瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查询语言(SQL)进行数据存储、管理和操作,广泛应用于Web
    的头像 发表于 05-23 09:18 1418次阅读

    PCB标准封装文件

    PCB标准封装文件
    发表于 05-22 17:43 10次下载

    HPI 4.6擎说明书维修手册

    hpi 4.6擎维修手册 配件规格说明书
    发表于 05-12 17:21 0次下载