最近看了百度手环开源项目,发现所有的算法都被封装成了一个lib文件在keil中调用 也是第一次学习到。

问题引出:为什么要做成lib库?

1、有些方案公司为了将自己写的关键部分源代码不进行公开,但是同时库文件又需要让别人能够正常调用,那封装成lib的格式就是一个好方法。

2、编译某些工程文件时非常耗时,像UCGUI和ST官方的库时,由于文件众多,编译一次可能得1两分钟,这时可以打包成库,这时编译工程时就不会再次编译库的文件,节省不少的时间。

唯一一点不好的是:不能用右键go to Definition 'XXX'来直接找到源文件定义了。但是一般别人都是测试好就封装成lib的

制作方法:以UCGUI为例

第一步:打开一个测试通过的工程。(如果本来要打包的库文件里面的代码有错的话,打包成库后也是不能用的,这步是关键)

测试没有问题后将不需要的部分删除,后如下图所示

第二步:打开KEIL MDK->Project->Option for target...->Output,选 中Create Executable:....选项。

第三步:重新编译,即可在原本生成Hex文件的目录下找到*.lib文件。

打开原工程,只需将原来的.c文件移除,添加进该.lib文件即可使用(程序调用要包含lib文件中c文件的所有头文件)。

特别注意的是:Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中. 没有调用关系的最好是一个函数单独放在一个.c文件中.这是为了避免在keil中应用程序调用lib库里出现告警.

最新文章

  1. 体验Visual Studio 2015 Windows Forms应用程序开发与维护
  2. java 继承(下)
  3. ios swift 2 新的OptionSetType使用方法
  4. 一个IP能建立的最大连接数是多少?
  5. linux线程的实现【转】
  6. Oracle 一些操作
  7. 【Swift】—— 中国课程
  8. composer 的快速安装
  9. 【openstack N版】——走进云计算
  10. C# int数据类型呵呵
  11. 关于always块内for循环的执行方式
  12. JLOI2015 DAY1 简要题解
  13. xgboost使用调参
  14. 使用git 上传项目到gitee/github
  15. js 乘除法小数问题
  16. hihoCoder #1183 : 连通性一·割边与割点(求割边与各点模板)
  17. 【运维理论】RAID级别简介
  18. 算法之经典排序-冒泡排序(bubble sort)
  19. HTTP Client Performance Improvements
  20. 2015-08-19(i++与++i的思考)

热门文章

  1. BugkuCTF--域名解析(windows)
  2. python基础之函数当中的装饰器
  3. Codeforces 1178B. WOW Factor
  4. hadoop批量命令脚本xcall.sh及jps找不到命令解决
  5. django-Auth模块(详细介绍)
  6. luogu P2605 [ZJOI2010]基站选址
  7. Nginx配置,请求到tomcat中
  8. python 利用已有Ner模型进行数据清洗合并
  9. git ignore 如何忽略已经提交的文件修改
  10. v-bind:value="diy" 添加到 <input type="button" /> 中可以,添加到<button />中不可以,diy是data中的数据