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

    文章

    18628

    浏览量

    387506
  • IAR
    IAR
    +关注

    关注

    5

    文章

    401

    浏览量

    38349
  • 模块化
    +关注

    关注

    0

    文章

    347

    浏览量

    22522
  • keil
    +关注

    关注

    69

    文章

    1224

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    协作机器人企业加速布局具身智能赛道

    如果说2024年最火的话题是AI大模型,那具身智能无疑是2025年最热门的话题之一。
    的头像 发表于 10-31 14:39 1316次阅读

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

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

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

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

    AD封装安装教程

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

    MySQL数据是什么

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

    如何为micropython添加自己的C代码

    部分代码需要更高效的效率 如何为micropython添加自己的C代码? 是否有教程? 如果可以的话是否可以提供一个实现实例?
    发表于 03-11 07:03

    2025年电子行业值得关注的话题

    《What's Next》是安富利推出的全新数字读物,面向任何想要了解电子行业未来发展趋势的用户,安富利凭借在全球市场的深厚积淀与广泛影响力,为您精选最具前瞻性的议题,呈现精准的市场趋势、深刻的技术洞察。
    的头像 发表于 02-18 17:36 1265次阅读

    ADS1248是24位AD转换芯片,如果最高位是符号位的话,那就是精度23位了?

    有个问题没搞明白,ADS1248是24位AD转换芯片,如果最高位是符号位的话,那就是精度23位了?参考电压是2.048V的话,那转换出来的电压就是2.048/2^23 *AD ?还是2.048/2^24 *AD ?求大神详解。
    发表于 01-15 06:57

    MySQL数据的安装

    MySQL是一个开源免费的关系型数据管理系统,瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。 MySQL 最流行的关系型数据管理系统,在 WEB 应用方面MySQL是最好
    的头像 发表于 01-14 11:25 866次阅读
    MySQL数据<b class='flag-5'>库</b>的安装

    云数据是哪种数据类型?

    云数据是一种部署在虚拟计算环境中的数据,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据服务。云数据主要分为两大类:关系型数据
    的头像 发表于 01-07 10:22 807次阅读

    数据加密办法

    企业对于数据的重视程度不言而喻,也衍生出了数据=资产的概念。但是数据泄漏的事件频繁发生,为了保护数据资产,企业有必要对数据做一些针对性的措施,让企业更安全。   数据加密是保护数据安全的重要措施
    的头像 发表于 12-24 09:47 1013次阅读

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

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

    机器视觉 欢创播报 曝华为车BU拟于25年1月1日并入

    购买华为持有的望公司10%股权。据悉,当下华为车 BU 处于业务高速增长期,未来的签约将会以望的形式出现。另据媒体报道,华为车 BU 一名员工表示,之前已经重新签了合同,只是从1月1号开始,发薪和社保主体变成
    的头像 发表于 12-19 11:24 863次阅读
    机器视觉 欢创播报  曝华为车BU拟于25年1月1日并入<b class='flag-5'>引</b>望

    开源AI模型是干嘛的

    开源AI模型是指那些公开源代码、允许自由访问和使用的AI模型集合。这些模型通常经过训练,能够执行特定的任务。以下,是对开源AI模型的详细介绍,AI部落小编整理。
    的头像 发表于 12-14 10:33 1301次阅读

    ADS1263第3脚AINCOM的作用是什么,怎么使用?

    目前选用TI的ADC采集芯片ADS1263,有些问题需要咨询一下: 1、该芯片必须支持差分吗? 2、第3脚AINCOM的作用是什么,怎么使用? 3、还有第15、16晶振引脚是不是只能
    发表于 12-10 06:22