Sam*_*rsa 7 boost dynamic-linking static-libraries static-linking dynamic-library
我从来没有把过多考虑到静态库和动态库之间的大小差异,直到今天我下载了升压的预建库.我发现boost的静态库远远大于动态库.
例如,调试多线程boost wave静态库97.7 mb的大小,而相同的库,但动态,只是1.4 mb大小(包括导入库和DLL)!这是一个巨大的差异.这是为什么?
第二个问题,如果我静态链接,比方说,wave图书馆.这是否意味着我的可执行文件的大小会超过97.7 mb?
静态库中包含完整的调试符号信息。对于 DLL,该信息将位于 .pdb 文件中(我认为该文件的大小与静态库类似)。
当您链接到静态库时,符号信息不会被复制到 .exe 中 - 它将被放置在 .pdb 文件中(如果您的构建配置为创建 .pdb 文件)。无论是否创建 .pdb,.pdb 文件都不需要与 .exe 一起分发。
在我从 boostpro.com 获得的预构建库下载中,我没有获得他们提供的 boost DLL 的 .pdb 文件。如果您自己构建 DLL,您可能会获得 .pdb 文件(尽管您可能必须设置一些配置选项,我不知道详细信息是什么)。
更新:
看来我对于轻松获取 boost DLL 的 .pdb 文件可能是错误的。来自http://comments.gmane.org/gmane.comp.lib.boost.build/23246:
Run Code Online (Sandbox Code Playgroud)> Is there an additional option that I can pass on the command line to > have the (correctly generated) PDB files also copied into the stage > directory?目前还不行。您只能 在现在写有 或 的 地方
tools/build/v2/tools/package.jam进行添加。<install-type>PDB<install-type>SHARED_LIB<install-type>STATIC_LIB