一、写在前面

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

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

什么情况下要生成库?

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

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

生成库的原则?

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

二、KeilIAR如何生成库?

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

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

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

三、静态库和动态库的区别?

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

答案是:二者都是静态库

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

简单的来说二者的区别:

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

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

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

四、最后

微信搜索EmbeddDeveloper” 或者扫描下面二维码、关注,查看更多精彩内容。

KeilIAR生成库及库的说明与使用相关推荐

  1. Ubuntu下makefile及gcc生成静态库动态库的简单使用举例

    环境:Ubuntu-13.10  32位(虚拟机).gcc4.8.1 首先创建一个test_makefile_gcc文件夹,此test_makefile_gcc文件夹下包括:src文件夹用于存放源文件 ...

  2. windows7下,Java中利用JNI调用c++生成的动态库的使用步骤

    1.从http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html下载jdk-7u2-wi ...

  3. 鸿蒙so系统,鸿蒙手机版JNI实战(JNI开发、SO库生成、SO库使用)

    鸿蒙JNI开发现状 现阶段,不仅鸿蒙JNI相关的开发资料较少,而且Phone相关的JNI开发资料几乎没有,这对于新入行的鸿蒙开发者们来说,非常不友好. 也可能会给Android工程(使用了SO库的工程 ...

  4. 「Python」python调用单个C++文件生成的动态库(.so)Part I

    环境说明 系统:Ubuntu 18.04 python:python 2.7.17 额外环境 上面的环境是普通测试,但是最终标题中的任务我需要在docker中执行,很多块内容我也不太懂,所以一步一步测 ...

  5. 【Qt】Qt6调用Visual Studio2019生成的动态库详解

    00. 目录 文章目录 00. 目录 01. 开发环境 02. Visual Studio 2019生成动态库 03. 新建Qt项目 04. 编写测试程序 05. 其它参考 06. 附录 01. 开发 ...

  6. linux库引入之动态库静态库(生成和使用)

    库: 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容. 如何使用 用户需要同时具有头文件和库. ...

  7. Linux-(C/C++)生成并使用静态库/动态库

    静态库/动态库概要 在Windows下静态库的后缀为:.lib.动态库后缀为:.dll:而在Linux下静态库的后缀为:.a.动态库的后缀为:.so. 那么什么是静态库呢? 首先我们来看看程序编译的大 ...

  8. Golang生成C动态库.so和静态库.a

    Go 生成C动态库.so和静态库.a 源代码 package mainimport "C" import "fmt"//export hello func he ...

  9. vue怎么自己创建组件并引用_如何在组件库项目内直接引用vue-cli生成的组件库文件...

    感谢大家帮忙, 我第一次用vue-cli制作组件库,使用的命令是: vue-cli-service build --target lib --name vpui ./src/components/in ...

  10. html转换成pdf工具-wkhtmltopdf、Python生成PDF(pdfkit库)

    文章目录 一.html转换成pdf工具-wkhtmltopdf 1. 什么是wkhtmltopdf 2. 如何使用它? 3. 常见问题 error while loading shared libra ...

最新文章

  1. java配置中心开源项目_配置中心搭建(spring-cloud-config-server)
  2. Hash join 和nested loop
  3. 中国人工智能计划,我来说几句
  4. 编写程序python、实现将矩阵顺时针旋转90°_Java实现矩阵顺时针旋转90度的示例...
  5. python调用c++返回带成员指针的类指针
  6. python怎么检查错误-错误处理
  7. Ubuntu升级之后The disk drive for / is not ready yet or not present的解决方法
  8. 华人包揽CVPR 2019最佳论文,李飞飞ImageNet成就经典
  9. 彻底卸载SqlServer2008R2
  10. python插入排序_python 插入排序,选择排序
  11. JM与h264标准中的关键字说明
  12. sql中having、group by用法及常用聚合函数
  13. python hadoop_让python在hadoop上跑起来
  14. oschina压缩工具
  15. 蠕虫Sexy View短信攻击诺基亚3250等手机
  16. 【Scratch】青少年蓝桥杯_每日一题_10.09_小猫奔跑
  17. C# 绘制矩形方框读写内存类 cs1.6人物透视例子
  18. python读取excel文件数据并且画折线图(入门级)
  19. matlab 最优资产组合,基于MATLAB的最优投资组合问题.pdf
  20. VMWare 导出vmdk并转为qcow2格式

热门文章

  1. 月子中心加速洗牌,“马太效应”下爱帝宫掀起资本浪潮?
  2. 应广单片机adc_应广单片机选型表
  3. 再添理事成员:麒麟软件、浪潮信息、中科曙光、新华三加入龙蜥
  4. 尚硅谷VUE课程的页签图标问题
  5. 2020年全球传感器市场概述:市场规模有多大?重点企业是哪些?
  6. html + thymeleaf 制作邮件模板
  7. DTMF按键频谱分析
  8. OCaml入门(一)——OCaml中的基本数据类型、运算符号、表达式和函数
  9. 日历算法 [ 解读算法的乐趣 ]
  10. PHP常用系统函数帅哥特供版