Keil C 库文件的制作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Keil C库文件的制作
在实际工作中,我们可能通常要为我们的知识产权进行恰当的保护,这样我们就可能经常不方便以源代码的形式交付我们的劳动成果,所以这时候我们就需要将我们的执行码作为交付的方式交付使用方使用。

对此我们也就需要把我们所设计的对象,封装在执行码文档中,并且要保证不影响使用方的使用。

Keil C允许我们在一个工程中包含两类执行码文件,即.obj文件与.lib文件。

如图9-2:
图9-2 项目中可包含.obj与.lib两类执行码文件
下面我们来研究.lib封装执行码的方法。

先在我们的工程中包含一个Keil C中提供的库文件,如C51BS.LIB,然后在项目的工作空间中对文件名点右键。

如图9-3:
图9-3 查看C51BS.LIB的设置选项
选择“为文件C51BS.LIB设置选项”后,将出现C51BS.LIB
库文件的一些重要信息。

如图9-4:
图9-4 查看C51BS.LIB的设置选项
我们这里特别关注一下图9-4中所说的模块这个概念。

如图9-5中关于模块的信息:
图9-4 C51BS.LIB库的模块设置选项
我们这样来理解,模块是库文件中一个完整的执行码整体,它在联合编译的时候将会被整体联入我们的目标文件中去。

这就意味着在一个库文件中的同一个模块里的执行码,无论我们在项目中有没有使用,它都将会被联入。

这个问题就是我们需要关注的问题。

如果我们的模块中有可能出现不希望总被联入的执行码,我们就必须要把它从现有的模块中独立出来,单独形成模块。

不要让额外的执行码来消耗我们的单片机程序空间。

为了创建一个好用的库,我们先从图9-5中了解一下库的空间逻辑关系。

了解了库空间逻辑关系后我们再来了解一下Keil C 所提供的lib51库管理工具,如图9-6:
图9-5 库的空间逻辑关系
图9-6 lib51命令表
lib51为库文件管理提供了Create、Add、Delete、eXtract、List、Replace、Transfer这几个命令,关于这几个命令的具体说明,可以在Keil C编辑器中提供的帮助中找到,这里就不做详细地说明。

根据这些命令的配置,我们可以来制订我们创建库的计划,如图9-7:
如果要为库增加其他模块,只要反复重复2到4就可以了。

这样添加的模块都将出现在图9-4所示的选项中。

为了方便的交付使用,我们一定要做好发布头文件,以便调用者方便的使用库中的资源,头文件中要包含公开的类型定义、变量、宏定义、函数声明及使用说明等所有公开的信息。

对于可能造成冲突的定义一定要做好妥善处理。

我们在使用库的时候,只需要根据建设库时所提供的头文件
信息,在自己的项目中定义自己所需要的定义就可以了,对于变量与函数要声明为extern。

然后我们就可以当作普通的变量与函数进行使用,不要去介意它们来自工程内部,还是来自外部封装库。

在我们的对象设计中,我们完全可以以对象为模块来进行设计我们的对象封装库,而至于对象的具体实现,则不是调用它的人所需要关心的事情,他们完全不必去操这些闲心。

摘自本人自撰的《思想与裸编程》
如有错误欢迎批评指正。

余灿基 QQ:119454985
2010-5-25编摘。

相关文档
最新文档