如何优化Linux终端中C编译生成的可执行文件

时间:2015-11-20 17:02:08

标签: c gcc optimization

有没有办法减少使用像gcc source_file.c -o result这样的命令生成的可执行文件所使用的内存?我浏览了互联网并查看了“gcc”的手册页,我认为我应该使用与-c-S相关的内容。那么gcc -c -S source_file.c -o result工作吗? (这似乎减少了使用的空间......还有其他方法可以减少更多吗?)

谢谢, POLB

2 个答案:

答案 0 :(得分:2)

指示编译器优化的POSIX类系统上的standard compiler option-O o ptimize的大写字母O)。许多编译器允许您在-O之后选择性地指定优化级别。常见的优化级别包括:

  • -O0根本没有优化
  • -O1速度的基本优化
  • -O2所有-O1加上一些高级优化
  • -O3所有-O2以及通常不需要的昂贵优化
  • -Os优化尺寸而不是速度(gcc,clang)
  • -Oz针对尺寸进行更优化(铿锵)
  • -Og所有-O2除了阻碍调试的优化(gcc)
  • -Ofast所有-O3和一些不符合标准C的数字优化。请谨慎使用。 (GCC)

答案 1 :(得分:-3)

选项-S生成汇编程序输出。 更好的选择是使用llvm并为多架构生成集合器。类似http://kripken.github.io/llvm.js/demo.html

llc

这里是示例https://idea.popcount.org/2013-07-24-ir-is-better-than-assembly/