[讨论] 自己keil LIB创建

haixinghp   2014-10-13 14:51 楼主
现在大家对KEIL的使用还是比较多了,其中使用到技巧能是我们的工作效率提高很多。 之前我看到论坛大侠的程序,但是有些文件的后缀是.LIB,不能像.H .C一样双击打开。查看一些驱动文件也是无法进入。百度了很久,得到了以下重要的作用: 1、可以是有些不需要修改的文件被改写,LIB不能进行编辑 2、保护自身代码的安全性,比如和其他公司合作的时候就能用到了 3、相比添加.C文件,它具有不使用已经申明的extern 函数也不会出现Keil经典的 4、UNCALLED FUNC warning。更重要的是,不使用的函数编译时不会产生代码,从而大大减小.hex文件。 5、可以把多个.c文件合成一个lib文件,这样在工程就不必要把每一个.c文件都添加一 ,实现快速启动项目 下面来看具体的实现过程: 1.点开target option 图片1.png 2.output选项下选择Greate library 方框中可以修改名字 图片2.png 3.编译全部的文件 图片3.png 可以在文件目录找到这个文件 图片4.png MyTools.libMyTools.h拷贝到调用的工程的文件目录下。 图片5.png 打开调用工程,选择添加文件 图片6.png 在下拉中选择.lib文件(一定要选这个,不然会出现L1,L2警告) Add添加 图片7.png 编写测试函数 图片8.png 选择软件仿真 图片9.png 点击仿真图标 图片10.png 添加断点,和调出IO状态 图片11.png 可以看到仿真的结果。 图片12.png 主要在网络上参考了别人是文章(感谢万能的网友),但是还是要自己实践一下,在实际的工作学习中可以快速的使用上刚学到的知识。下面附上自己的例子给大家参考 本帖最后由 haixinghp 于 2014-10-13 15:03 编辑

    LIB.zip (2014-10-13 14:59 上传)

    64.46 KB, 下载次数: 27

回复评论 (12)

这样用很久了,目标选lib编译后执行批处理拷贝,库文件带debuginf还可以调试.51的话把每个函数放到一个c文件可以防止W16警告 (补充) 好吧既然加精化了我来展开补充一下,上面提到批处理拷贝,这个操作的目的是让LIB文件独立出来也就是你可以删除整个LIB工程而不影响LIB的使用,这个在你想要交付软件而又不想让别人看你源码的时候比较有用,你只给他LIB和头文件,而.c的文件是没有的,记得要去除denuginfo的选项哦List文件里是什么都有的.要实现这个目的最好目录结构需要一定的规划,源文件放到一个子目录底下,调试完成后删除这个目录只有一个LIB和一个.h文件留在工程里,使用库文件只需要这两个.lib是函数的执行码,.h是函数的调用方式及全局量引入、结构定义等等. 实现上就是每次编译后复制一份lib和相关的头文件到上层目录的libfile目录里,主工程引入lib和.h即可。 目录结构 编辑批处理 批处理文件内容 copy /Y .\Output\LCD1602_Driver.LIB ..\Lib_File\LCD_Driver.LIB copy /Y .\LCDExternFun.h ..\Lib_File\LCD_Driver.h 加/y参数无条件覆盖,注意这里用的是相对路径,确保工程在移动后不会出问题. lib工程里加入编译后执行 下一个问题是库函数调试的问题,要单步在源码级调试库函数有两个条件,1:库文件里包含debuginfo;2:需要调试的源文件手动打开;(注意这里说的是在源码级调试,汇编级调试是不需要源文件的).库文件编译好以后去除debuginfo然后开启优化选项,当你用到库函数的时候已经优化过的了是不是有点小爽呢. 最后一个问题,主工程里已经包含了这个库函数但是从来没有用到会出一个war16的警告,这个时候库函数的执行码已经包含在目标里面了,如果忽略这个警告是可以的但是会浪费存储空间.如果在keilforarm下不会有这个问题,因为keil有一个选项可以解决,但是keilfor51下面却没有,51不存在段的问题,所以只能一个函数一个.c这样调用的过程实际是个远调用. (补充完) 本帖最后由 huo_hu 于 2014-11-17 10:51 编辑
  • 无标题.png
点赞  2014-10-13 15:14
引用: huo_hu 发表于 2014-10-13 15:14
这样用很久了,目标选lib编译后执行批处理拷贝,库文件带debuginf还可以调试.51的话把每个函数放到一个c文件 ...

谢谢指点,学习了
点赞  2014-10-13 15:16
狂顶楼主的keil LIB创建经验分享
点赞  2014-10-13 15:16
引用: qwqwqw2088 发表于 2014-10-13 15:16
狂顶楼主的keil LIB创建经验分享

谢谢,在论坛潜水了好久,不发点东西都感觉都不好意思了……
点赞  2014-10-13 15:19
顶海星。。
点赞  2014-10-13 15:31
主要在网络上参考了别人是文章(感谢万能的网友),但是还是要自己实践一下,在实际的工作学习中可以快速的使用上刚学到的知识。应该要感谢
点赞  2014-10-14 19:27
谢谢指点,学习了
点赞  2014-10-19 12:39
先收藏,再支持。
点赞  2014-11-16 22:47
超级的有用
点赞  2016-3-14 18:17
引用: ruyibang 发表于 2016-3-14 18:17
超级的有用

哈哈 谢谢!
点赞  2016-3-23 08:11
顶一下!说的很好。
点赞  2016-4-13 10:58
学习学习。
点赞  2017-12-13 02:26
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复