keil和IAR生成的hex和lib,.a库文件的区别和联系

通常用keil生成的文件中有什么hex问价lib文件云云,hex这个是烧到单片机里的可执行文件,烧进去用就OK了,那么lib库文件又是什么东东?最近手上有个项目,说是吧编好的程序生成lib库文件发给客户用,我是这么理解的,如果直接发给用户hex文件直接烧呢,里面的变量呀函数参数什么的不能修改,但是C语言的源代码呢,也不太合适,这是我们自己的核心算法,所以呢做编译器的人想了个办法弄出个lib这个东西来,就好像st公司出的库文件一样可以修改参数,lib就这么在脑海中形成这么一个概念,但是一直用的51,具体stm的库是什么样的也没有见过,那么keil生成的lib怎么打开呢,怎么修改里面的参数,变量呢,又怎么再编译生成可执行的hex呢?

    在linux/unix, .a文件是静态链接库文件,即其只进行过编译未进行链接的 

    在windows,.lib文件有动态也有静态之分,静态的话与第1点描述类同,动态的话即相当于一个头文件,具体实现部分是在DLL文件

    hex文件如你的理解,是烧录进单片机中MCU的ROM或RAM中的

    .lib文件的生成也如你概念的理解,就是要防止他人了解核心代码的实现,是不可以被修改的,或是强行修改后无法达到应有的功能,只可参考其头文件中各个函数被动的使用

    .lib只能被使用,其甚至可以没有main函数,或许你可以写一个main函数引用.lib中相关函数使用Keil重新生成hex

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-18
LIB库有什么用,一个简单的例子就是Silicon Labs为C8051F单片机USB提供的USBXpress LIB库了,如USB发送数据、接收数据等,都是通用性很强的函数,但因为保密的原因,这个函数是怎么写的,用户是不知道的,只提供接口的API函数,只要调用这些函数即可完成相应功能
使用时,用户只要导入相应的库,并引用相应的h文件,就可以直接调用库中的函数,编译器编译时自动从库中引用用户调用过的函数
相似回答