关于库引生出来的话题

0?wx_fmt=gif

本篇技术文章的内容在前面已经分享过,写本文的主要目的在于想在这里告诉各位关注我的人:我分享过的内容,如果你没有看,回头你又来问我这类问题,我基本上不会回答。请大家换位思考,体谅一下哦!

有种情况我可以理解,就是:你问我的问题,在你关注我之前我分享了此类文章,这种情况我可以理解,我也会尽量回答!假如:你2016-08-10关注了我,而我在2017-02-10分享了一篇文章,到2017-07-10你问了我2017-02-10分享文章里面的内容,那么我看见了基本都不会回答。

好了,上面说的好像有点严肃。其实,我这个人还是很好说话的,这不,就放出了下面这篇技术文章。PS:这篇文章就是上面说的一位读者问的问题。这类问题应该是大部分人应该理解的,故在这里再重新整理来分享给大家。

写在前面

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

 

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

什么情况下要生成库?

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

 

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

 

生成库的原则?

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

Keil、IAR如何生成库?

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

 

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

0?wx_fmt=png

 

IARProject -> Options -> General Options -> Output 勾选上“Library”即可。

0?wx_fmt=png

库在工程的使用方法

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

0?wx_fmt=png


静态库和动态库的区别?

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

 

答案是:二者都是静态库

 

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

 

简单的来说二者的区别:

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

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

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

最后

微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,在我的底部菜单查看更多精彩内容!

0?wx_fmt=gif

0?wx_fmt=jpeg

0?wx_fmt=gif

长按识别二维码 关注

随手点赞是对文章,对作者的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值