【发布时间】:2010-07-26 03:37:16
【问题描述】:
我有一个 C++ 编译的静态库,其中包含大约 15 个类及其成员函数和东西,并且编译后,它几乎有 14 兆字节。它链接到 Google 的密集哈希表库和 MPIR,这类似于 Windows 的 GMP,但我在一个普通的 exe 中完成了它,它只有几千字节。为什么它如此庞大?我能做些什么来减小它的大小?似乎还有其他程序比我的要复杂得多,但要小得多。
用Visual C++编译,命令行为:
/Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE"
/D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t
/Zc:forScope /Fp"Release\ang.pch" /Fa"Release\" /Fo"Release\"
/Fd"Release\vc100.pdb" /Gd /analyze- /errorReport:queue
【问题讨论】:
-
你能提供一些更具体的信息吗?编译器、编译标志等
-
用Visual C++编译,命令行为: /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp"Release\ang.pch" /Fa"Release\" /Fo"Release \" /Fd"Release\vc100.pdb" /Gd /analyze- /errorReport:queue
-
当你静态编译时,你必须期待一个巨大的可执行文件。你得到了一切——标准库,一切。
-
@zdav:不;链接器将丢弃您不使用的设施。
-
我认为你应该调整你的看法。 14 兆字节并不大。
标签: c++ linker static-libraries static-linking