【单片机|keil把源代码生成lib的方法】大家好,我是无际。
不知道大家有没有看到过.lib为后缀名的文件。
我们用keil开发工具就可以把我们的.c文件生成.lib文件。
这样能达到以下目的:
1.不想让别人看到自己写的源代码,同时又想让他使用你的程序功能。
一般很多芯片原厂就是这样干的,比如说TI的蓝牙和Zigbee协议栈,虽然说是开源的,但是实际上你去看他们底层的代码,很多都是用这种方式加密的。
还有就是一些模块原厂提供模块给方案商用,比如说以前我用汉枫wifi模块的时候,他们核心的代码就是通过这种方式的。
还有就是做电子狗和导航产品的,他们那个地图库是100%加密的。
总结:一般核心技术就会这样去加密,菜鸡程序就不用加了,浪费情怀。
2.加快编译速度,比如说工程比较庞大的时候,如ST固件库,文件很多编译时间需要很长,如果打包成lib库,就能节约不少时间(网上看的,真实性自行考察)。
下面是用keil把我们代码生成.lib的方法,我用我们无际单片机编程的wifi报警主机项目按键功能模块举例。
2.建立一个空的工程,把你需要加密的文件添加进去。
文章图片
把需要生成lib的.c文件添加进来,这我需要把我按键功能模块代码生成lib,所以添加hal_key.c。
2.打开keil的options for Target…设置。
文章图片
3.选择Output选项,在该选项选择Create Library…lib
文章图片
然后点ok,重新编译就行了,是不是贼简单?
4.编译没有错误以后,我们在工程目录下找到Objects文件夹。
文章图片
5.我们可以看到有一个lib文件,就是我们刚刚编译生成的。
文章图片
不知道大家发现没,怎么生成的名字不是hal_key而是wh01?
这个其实是根据你工程名字生成的,我们手动重命名就可以了。
文章图片
6.把我们这个lib文件添加到需要用到按键功能的工程文件夹里。
文章图片
这里需要注意的是,一般要把lib文件和对应.h头文件一起放到对应文件夹里面,别人使用你的函数功能,以及函数有什么参数,就是通过查看.h文件调用的。
文章图片
通过hal_key.h文件,我大概知道这个源代码提供3个可以提供外部调用的函数。
一个是按键初始化hal_KeyInit(),无返回值,无形参。
一个是按键检测函数hal_KeyProc(),无返回值,无形参。
一个是函数指针注册函数hal_KeyScanCBSRegister。
如果我们需要给别人用的话,不要学我啥注释没有,我们是在视频教程里有讲每个函数的作用。
一定要有点注释,让别人知道怎么调用,有什么条件要求,不然光几个函数别人肯定一脸懵逼。
7.下面,我们就能正常使用hal_key.c的函数功能啦。
文章图片
同时,别人也看不到你hal_key.c这个文件的源代码了。
最后还想跟大家说几句话。
别看封装lib代码很简单,实际是一门技术活。
主要体现在你的代码移植性写的好不好,如果移植性不好,会直接暴露你的水平。
我就碰到过很多模块厂的工程师封装以后,还需要用到全局变量来传递数据的,这种就是经验不足的人写出来的代码。
封装成lib不是什么技术,怎么能把你的代码封装完以后最小程度干涉别人的代码才是技术。
推荐阅读
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 【C】题目|【C语言】题集 of ⑥
- 单片机|单片机初学者做项目为什么这么难(单片机初学者心得有哪些)
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- 单片机|Arduino、arm、树莓派、单片机四者有什么不同()
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 个人理解|【C语言基础之类型转换】