Keil C 库文件的制作 在实际工作中,我们可能通常要为我们的知识产权进行恰当的保护,这样我们就可能经常不方便以源代码的形式交付我们的劳动成果,所以这时候我们就需要将我们的执行码作为交付的方式交付使用方使用。 对此我们也就需要把我们所设计的对象,封装在执行码文档中,并且要保证不影响使用方的使用。Keil C 允许我们在一个工程中包含两类执行码文件,即.o bj 文件与.lib 文件。如图 9-2: 图9-2 项目中可包含.o bj 与.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: LIB M1 M2 Mn 变量 函数 对象 图 9-5 库的空间逻辑关系 图9-6 lib51 命令表 lib51为库文件管理提供了Create、Add、Delete、eXtract、List、Replace、Transfer 这几个命令,关于这几个命令的具体说明,可以在 Keil C 编辑器中提供的帮助中找到,这里就不做详细地说明。 根据这些命令的配置,我们可以来制订我们创建库的计划,如图9-7: 如果要为库增加其他模块,只要反复重复2 到4 就可以了。这样添加的模块都将出现在图9-4 所示的选项中。为了方便的交付使用,我们一定要做好发布头文件,以便调用者方便的使用库中的资源,头文件中要包含公开的类型定义、变量、宏定义、函数声明及使用说明等所有公开的信息。对于可能造成冲...