【发布时间】:2014-05-17 11:06:34
【问题描述】:
将程序编译为静态库之间的一般区别是什么 vs. 将源代码包含到程序中?
即。具有被编译为静态库 (.lib) 并链接到程序中的函数的程序与具有作为源文件包含在主程序中的函数的程序。
发布闭源程序时更适合发布的静态库? 编译速度更快?等等。
【问题讨论】:
-
取决于你的调试器有多好——它可能无法进入静态库
标签: c compilation static-libraries
将程序编译为静态库之间的一般区别是什么 vs. 将源代码包含到程序中?
即。具有被编译为静态库 (.lib) 并链接到程序中的函数的程序与具有作为源文件包含在主程序中的函数的程序。
发布闭源程序时更适合发布的静态库? 编译速度更快?等等。
【问题讨论】:
标签: c compilation static-libraries
我主张包含源代码,因为:
【讨论】:
作为已经编译好的可执行文件,它们之间基本上没有区别。我认为重点是您从事软件工程的目的。
如果您是组件开发人员,静态链接库可以为您宝贵的源代码保密。如果您将源代码作为业务,它可能非常重要。
同时,如果您希望人们在任何平台上使用您的源代码,您可能希望将您的模块作为源代码发布,就像开源开发人员正在做的那样。
【讨论】:
使用库时编译会更快,因为您不需要编译它的代码,而只需要链接它。但最重要的收获是围绕软件架构:创建一个库将为您提供一种编写代码的方法,该方法将更容易在未来的应用程序中重用。来自Wikipedia:
库的价值在于行为的重用。当程序调用库时,它会获得在该库中实现的行为,而无需自己实现该行为。库鼓励以模块化方式共享代码,并简化代码的分发。
【讨论】:
通常最好将您的软件分离出来并将其转换为.lib 或.dll 文件(或适合您的操作系统和可执行格式的文件){不重复}。
此外,将源代码直接包含在您的源文件中会使应用程序变得庞大,并且仅更新一小部分代码将需要重新构建您的可执行文件,如果您希望您的用户下载和使用该应用程序,您的用户将对再次下载整个应用程序文件不满意。
第三,正如用户 3647458 所说,如果您通过销售组件代码赚钱,那么 .lib 文件就是您希望将您的库作为(可能是免费的)提供的。
【讨论】: