编译库并在应用程序中使用其源文件之间的区别

时间:2011-02-15 22:34:28

标签: c compilation

我正在使用C语言的MCU,我有一个已经建立的库,我想用它来构建我自己的应用程序。区别在于:

  1. 在.lib中编译库文件,然后将我的应用程序(使用该库)链接到该.lib,并将其编译为目标
  2. 只创建一个项目,我在其中导入所有文件(.c和.h)并将其编译为目标
  3. 这是一个非常基本和一般性的问题,但我想澄清一下......

2 个答案:

答案 0 :(得分:3)

编辑:答案是假设您从软件工程的角度提出要求。

将库文件与应用程序代码分开是一种最佳实践方法。除了库文件和应用程序的静态和动态链接之外,库文件还应包含逻辑/语义相关的代码。这种结构将您的代码“组件化”为可重用的软件,可以将其输入到其他库和应用程序中。这种做法促进了松散耦合,是软件设计和实现的首选方法。

使用单一项目方法,您仍将拥有在需要时编译的相同目标文件(如在单独的库方法中)。只有那些被更改的文件才会相应地重新生成它们的目标文件。但是,您仍然会得到一个全新的库/应用程序文件。

作为使用第一种方法(数字1)的一个示例好处,您可以将单独的“测试”库分层以对独立库进行单元测试,而无需重新包含或重新构建独立库。您在对测试库进行修改时运行独立库(例如,添加,修改,删除单元测试)。

希望这有帮助!

答案 1 :(得分:1)

库中的链接可以减少构建时间......特别是如果要编译大量源文件的话。如果你有一个好的构建系统,这可能不是什么大问题。这个方法还为您提供了一个很好的模块化组件,可以在其他项目甚至未来的构建中使用更高的置信度,因为您知道它没有改变。

使用库源始终构建可以使调试更容易,因为您可以单步执行并在库源中设置断点。即使您假设库代码没有问题,在调试应用程序的其余部分时,在库源中设置断点仍然会有所帮助。