【问题标题】:static library implementation vs including source code implementation静态库实现与包括源代码实现
【发布时间】:2014-05-17 11:06:34
【问题描述】:

将程序编译为静态库之间的一般区别是什么 vs. 将源代码包含到程序中?

。具有被编译为静态库 (.lib) 并链接到程序中的函数的程序与具有作为源文件包含在主程序中的函数的程序。

发布闭源程序时更适合发布的静态库? 编译速度更快?等等。

【问题讨论】:

  • 取决于你的调试器有多好——它可能无法进入静态库

标签: c compilation static-libraries


【解决方案1】:

我主张包含源代码,因为:

  1. 静态库比源代码更依赖于体系结构。您将需要一次又一次地编译它。
  2. (可选)源代码允许比与预编译库链接更多的优化。
  3. 在检查程序时,最好有机会看到源代码,而不仅仅是原型。

【讨论】:

  • 对,我自己更喜欢访问代码本身,让我了解幕后发生的事情。
【解决方案2】:

作为已经编译好的可执行文件,它们之间基本上没有区别。我认为重点是您从事软件工程的目的。

如果您是组件开发人员,静态链接库可以为您宝贵的源代码保密。如果您将源代码作为业务,它可能非常重要。

同时,如果您希望人们在任何平台上使用您的源代码,您可能希望将您的模块作为源代码发布,就像开源开发人员正在做的那样。

【讨论】:

    【解决方案3】:

    使用库时编译会更快,因为您不需要编译它的代码,而只需要链接它。但最重要的收获是围绕软件架构:创建一个库将为您提供一种编写代码的方法,该方法将更容易在未来的应用程序中重用。来自Wikipedia

    库的价值在于行为的重用。当程序调用库时,它会获得在该库中实现的行为,而无需自己实现该行为。库鼓励以模块化方式共享代码,并简化代码的分发。

    【讨论】:

    • 问题不同。这不是关于您应该如何编写代码,而是关于您是否应该将源代码直接放入您的项目中。如果您使用后者,您可以以与编写库完全相同的方式编写代码(因此保持您刚才提到的好处)。可以这样想:如果我拿一些开源库然后把它砸到我的项目中呢?
    【解决方案4】:

    通常最好将您的软件分离出来并将其转换为.lib.dll 文件(或适合您的操作系统和可执行格式的文件){不重复}。

    此外,将源代码直接包含在您的源文件中会使应用程序变得庞大,并且仅更新一小部分代码将需要重新构建您的可执行文件,如果您希望您的用户下载和使用该应用程序,您的用户将对再次下载整个应用程序文件不满意。

    第三,正如用户 3647458 所说,如果您通过销售组件代码赚钱,那么 .lib 文件就是您希望将您的库作为(可能是免费的)提供的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-16
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      相关资源
      最近更新 更多