我有一个非常简单的C++项目,该项目采用的boost :: regex库。我得到的输出是3.5Mb的大小。据我所知我静态链接所有boost.CPP文件,包括所有功能/方法。也许有可能以某种方式指示我的链接器只使用来自boost的必要元素,而不是所有元素?谢谢。为什么我的C++输出可执行文件太大了?
$ c++ —version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659)
这是size
说:
$ size a.out
__TEXT __DATA __OBJC others dec hex
1556480 69632 0 4296504912 4298131024 100304650
我试图strip
:
$ ls -al
... 3946688 May 21 13:20 a.out
$ strip a.out
$ ls -al
... 3847248 May 21 13:20 a.out
PS。这就是我的代码是如何组织的(也许这是造成这个问题的主要原因):
// file MyClass.h
class MyClass {
void f();
};
#include "MyClassImpl.h"
// file MyClassImpl.h
void MyClass::f() {
// implementation...
}
// file main.cpp
#include "MyClass.h"
int main(int ac, char** av) {
MyClass c;
c.f();
}
你觉得呢?
也许您正在构建调试信息插入可执行文件。尝试在启用优化的情况下构建。 – AraK 2010-05-15 06:48:12
您是否正在编译优化? – jalf 2010-05-15 12:58:42
我正在使用标志-O3 – yegor256 2010-05-16 05:53:04