我有一個非常簡單的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