在编译nginx 时,顺便查了下编译优化的参数,留个笔记。这里说的都是gcc
./configure
--with-cc-opt="%{optflags} $(pcre-config --cflags)"
下面是make优化:
make %{?_smp_mflags}
通常优化
make %{?_smp_mflags} CFLAGS="-O3 -g -mtune=generic -m64"
i386/x86_64通用CPU,gcc 最高级别优化,64位专用
make %{?_smp_mflags} CFLAGS="-O3 -g -mtune=native -m64"
探测本地CPU,gcc最高级别优化,本地64位专用,不可移植。
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
红帽参数,$RPM_OPT_FLAGS通常是-02 -g
发行商为了二进制文件的可移植性,以及在不同机器上的兼容性,-mtune=native -m64 这样的参数肯定是没加的,事实上这些参数可以略微提高二进制文件的执行性能。
如果是通过srpm编译来获得软件包,完全可以定制编译。
注:对于C++,请把 CFLAGS 替换为 CXXFLAGS 。
另外,打包时,安装软件包redhat-rpm-config 很有必要。它预设了一些环境,会自动根据你的环境进行优化,详见 /usr/lib/rpm/rpmrc和 /usr/lib/rpm/redhat/rpmrc
参考文档