在使用Code::Blocks提供的MinGW提供的g++ (4.9.2版)时,我得到了非常大的.exe文件,大小高达1000KB,表示"Hello,World!“程序。我使用的编译选项与从代码::块(mingw32 -g ++.exe -Wall -g hello.cpp -o hello.exe,不管怎样,我只是从代码::块日志窗口中复制)的“内部”编译选项完全相同,但与这种方式不同的是,它为调试目标产生了大约70KB的输出,为发布产生了大约50KB的输出,这持续产生令人难以置信的大量输出。
其他人也遇到过类似的问题吗?
EDIT My project (只为测试Makefiles而创建)由两个文件组成,main.cpp和fun.cpp (无头文件)。下面是main.cpp:
#include<iostream>
using namespace std;
void fun(void);
int main()
{
cout<<"Hello Make!"<<endl;
fun();
return 0;
}下面是fun.cpp:
#include<iostream>
using namespace std;
void fun()
{
cout<<"Hello from The Module!"<<endl;
}最后,这是我的Makefile:
CC = mingw32-g++
CFLAGS = -Wall -Os -lto
all: main.o fun.o
${CC} -o hello.exe $^
relink:
mingw32-g++ -o hello.exe hello.o fun.o
main.o: main.cpp
mingw32-g++ ${CFLAGS} -c main.cpp -o $@
fun.o: fun.cpp
mingw32-g++ ${CFLAGS} -c fun.cpp -o $@
clean:
del *.o在Code::Blocks下编译这个“项目”时,我得到了以下log
使用Makefile时,输出文件大小为1024KB:(print screen)
发布于 2017-07-12 00:49:07
调试版本通常会比优化(也称为“发布”)版本更大。尝试将-O2或-O3添加到您的构建选项中(或添加-Os以专门优化大小)。
此外,如果在发布版本中不需要调试符号,则删除-g (或稍后使用strip命令删除它们)。
此外,使用链接时间优化进行编译有时可以减少大小(除了性能改进之外)-为此,请使用-lto选项(除了-O选项之一)。
上面的代码会让你的尺寸大大减小。
有关这些选项的更多详细信息,请参阅gcc手册。
https://stackoverflow.com/questions/45040230
复制相似问题