关于编译后大小的问题
Questuion about size after compiling
我有一组文件。在 FreeBSD 下用 gcc49 编译。默认的 makefile,由我创建。好吧,那不是问题。
好的,我决定用CMake编译。
- 使用默认生成文件 (gcc49) 进行编译时,输出目标大小为:5 MB
- 使用 cmake 编译时(gcc49,与 makefile 默认中的标志相同)输出目标为:12 MB
我的问题是,为什么大小差异如此之大。
我希望文件结束,尽可能小,5mb 就可以了。
我应该怎么做才能制作我的 5mb 文件(使用 cmake)
谢谢大家
在这两种情况下,您使用不同的选项调用编译器。
CMake 已经为您设置了一系列最适合您项目的编译器和链接器选项。不幸的是,如果您是 CMake 的新手,并不总是很明显地了解为什么要设置特定选项以及如何以惯用方式更改它。
对于 Makefile 生成器,要找出 CMake 将哪些选项传递给编译器,您可以在 shell 上调用 make
时设置 VERBOSE
环境变量:
$ VERBOSE=1 make
将 CMake 使用的命令与手动构建时使用的命令进行比较。一旦确定了罪魁祸首,请进一步研究如何使用 CMake 最好地更改特定的构建选项。
CMake 默认构建 debug 配置。如果您还没有切换到 release 二进制文件作为调试构建,导致大小增加。
你可以再测试一下release,eg.:
cd release_dir
cmake -DCMAKE_BUILD_TYPE=Release ..
make
我有一组文件。在 FreeBSD 下用 gcc49 编译。默认的 makefile,由我创建。好吧,那不是问题。
好的,我决定用CMake编译。
- 使用默认生成文件 (gcc49) 进行编译时,输出目标大小为:5 MB
- 使用 cmake 编译时(gcc49,与 makefile 默认中的标志相同)输出目标为:12 MB
我的问题是,为什么大小差异如此之大。
我希望文件结束,尽可能小,5mb 就可以了。
我应该怎么做才能制作我的 5mb 文件(使用 cmake)
谢谢大家
在这两种情况下,您使用不同的选项调用编译器。
CMake 已经为您设置了一系列最适合您项目的编译器和链接器选项。不幸的是,如果您是 CMake 的新手,并不总是很明显地了解为什么要设置特定选项以及如何以惯用方式更改它。
对于 Makefile 生成器,要找出 CMake 将哪些选项传递给编译器,您可以在 shell 上调用 make
时设置 VERBOSE
环境变量:
$ VERBOSE=1 make
将 CMake 使用的命令与手动构建时使用的命令进行比较。一旦确定了罪魁祸首,请进一步研究如何使用 CMake 最好地更改特定的构建选项。
CMake 默认构建 debug 配置。如果您还没有切换到 release 二进制文件作为调试构建,导致大小增加。
你可以再测试一下release,eg.:
cd release_dir
cmake -DCMAKE_BUILD_TYPE=Release ..
make