最近看了百度手环开源项目,发现所有的算法都被封装成了一个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库里出现告警.

Keil工程Lib库文件的制作和运用相关推荐

  1. KEIL MDK LIB库文件的制作

    作者:yangluoning <KEIL MDK LIB库文件的制作> 来源:CSDN  原文:https://blog.csdn.net/yangluoning/article/deta ...

  2. KEIL封装lib库文件

    写单片机代码的时候,有些核心算法不想被开发者看到,但是还必须给开发者使用,这样的话可以使用keil自带的生成lib的功能. 在网上看了很多历程,对于第一次使用的人来说,写的都不是很全面,最终综合了很多 ...

  3. 在Keil C51下生成LIB库文件以及如何使用LIB库文件

      如何生成LIB库文件 1.首先准备好生成LIB库文件对应的.c和.h文件,在这里用到的.c和.h文件分别是: "reg303.h" "rjwf303_flash.h& ...

  4. 【keil5应用】如何生成lib库文件,以及使用lib文件

    一.制作库文件 1.准备一个基于Keil5的项目工程 此处使用原子例程,都是一个流程. 2.考虑制作库文件内容 此工程是跑马灯工程,故"FWLIB""CORE" ...

  5. VS中lib库文件的生成并使用

    一.lib文件的生成 新建项目或者已经建立的项目,生成lib文件 项目->属性->如下图更改目标文件扩展名和配置类型. 2. 新建test.h和test.cpp. 3. 然后选择 解决方案 ...

  6. 缺少lib库文件解决方法

    缺少lib库文件解决方法 1.缺少依赖包ld-linux.so.2 /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录 yum install gli ...

  7. Keil安装stm库文件方法及下载地址

    Keil安装stm库文件方法及下载地址 STM对应芯片库下载地址 官网下载靠谱 STM对应芯片库下载地址 在下载的时候需要去ARM,keil的官网进行下载,不用去找其他的博客链接,这个是官方网址, h ...

  8. .h头文件 .lib库文件 .dll动态链接库文件关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  9. .h头文件 .lib库文件 .dll动态库文件之间的关系

     .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和li ...

最新文章

  1. 建立企业级产品测试报告体系(概述)
  2. 移动**21*设置无法接通_七大新增时刻传奇!外服率先体验而国服暂时无法推出的粉传盘点+21赛季移动端首批精选上架!...
  3. 比尔·盖茨:我对投资比特币没有兴趣
  4. 【问题解决】ESP32 Brownout detector was triggered,log报错Brownout解决方法
  5. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)。
  6. raid及mdadm命令之一(含shell显示字体颜色等)
  7. LoadRunner 11简单使用
  8. 牛逼!Java 从入门到精通,超全汇总版
  9. duts 数据集_IEC61850测试概述
  10. 程序 卡塔_卡塔斯码
  11. 从Xcode编译时自带的“图片压缩”说起
  12. 如何将notepad++中的xml文件格式化(层级关系展示)
  13. 概率分布 ---- 正态分布
  14. jquery change 事件
  15. java disconnect_Java HttpResponse.disconnect方法代码示例
  16. 如何利用C语言生成随机数
  17. Python教程系列(17)--步长的使用规范
  18. hdu 5544 Ba Gua Zhen
  19. jmeter使用jd万象手机号码归属地查询接口和保存察看结果树的内容
  20. 计算机基础与应用计划大纲,计算机基础课程大纲及教学计划

热门文章

  1. ecs服务器配置git_基于ECS和NAS搭建个人网盘
  2. 单片机断电后不保存程序_51单片机运行过程
  3. Unigui 服务器解析php,如何正确使用uniGUI的HyperServer(负载均衡)功能
  4. Google新WorldSense预告片:独立VR
  5. JAVA实现斐波那契数列问题(《剑指offer》)
  6. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  7. iPhone13下周三发布,提前看剧透:刘海缩小、120Hz高刷屏、Mini又续一年…
  8. 英伟达用AI给自家纪录片配音,情绪节奏稳稳拿捏,不说根本听不出来
  9. 这个AI让马斯克头秃,还能帮他设计特斯拉
  10. 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...