原创文章,免费转载请注明出处。http://wudimei.com/yangqingrong
我在TDM-GCC官网上看到这一段话:“TDM-GCC still includes DLL versions of the libgcc and libstdc++ runtimes, which you can enable for your program with "-shared-libgcc" and "-shared-libstdc++" if desired.”

意思是说TDM-GCC仍然包含libgcc和libstdc++运行时的DLL版本(默认不使用动态DLL),如果需要,你可以为你的程序启用它,使用"-shared-libgcc" 和"-shared-libstdc++" 参数。

 

于是我试了一下:

g++ test.cpp -m32 -s -shared-libstdc++ -fno-exceptions -flto -fno-rtti -Os

结果编译后的a.exe只有12kb大小。

参数说明

-s 剪去符号。
-m32 这是输出32位的程序
-shared-libstdc++ 链接c++动态链接库,发布时要带上DLL。如果是gcc就使用"-shared-libgcc"
-fno-exceptions 不要异常

test.cpp内容

#include
#include

using namespace std;
class Person{
  public:
  int id;
  void setId(int newId){
      this->id =newId;
  }
  int getId(){
      return this->id;
  }
};
 
int main(int argc, char **argv)
{
    Person p;
    p.id=10;
    p.setId( 1024);
    printf("hello world! persion id: %d;\n", p.getId() );
     cout<     
}