分类: 嵌入式
2013-02-07 15:22:24
1、简介
什么是CFLAGS和CXXFLAGS?
CFLAGS和CXXFLAGS分别是针对C和C++代码在GCC下进行编译的环境变量。
如何使用它们?
在/etc/make.conf里面加入以下代码(示例代码,具体参数根据机器CPU选择):
CFLAGS=”-march=athlon64 -O2 -pipe”
CXXFLAGS=”${CFLAGS}”
2、优化
我们并不讨论GCC手册里面的上百种参数,这里只讨论最基本的优化参数。
-march
关于此参数的更详细的内容请参考
使用cat /proc/cpuinfo可以获得详细的关于机器CPU的信息,这对于填写此参数有帮助。
当然,如果你的程序要运行在不同的CPU,比如要发布此程序,在没有十分了解的情况下不要使用这个参数。
-O
这个参数不用多说,估计很多人都用过,不过需要注意的是,使用-O3是有风险的,它将需要更长的编译时间,产生体积更大的代码,消耗更多的内存,甚至产生不可预料的错误。所以,-O3在4.x版本是不推荐使用的,最好使用的参数是-O2。
-pipe
这个主要是可以再编译的时候使用pipe而不是临时文件来提高编译速度,如果内存足够,这个选项最好选上。
-fomit-frame-pointer
这个参数可以减少代码体积,貌似在指定-Ox的时候被默认指定,不过GCC没有明确指出,所以有必要的时候可以加上。
-msse, -msse2, -msse3, -mmmx, -m3dnow
在填写了正确的-march参数的情况下,可以不用理会这些指令集了。
参考:
原文: