linux GCC -O參數設置整理

字號+ 編輯: 种花家 修訂: H波 來源: 灵魂自由的忙人 2023-09-11 我要說兩句(0)

本文轉自CSDN同名文章

-O参数只有5个级别,并不是设置的越高越好(以前的GCC支持很高的级别,但是现在确实只有5级)

◆-O0:关闭所有优化选项

◆-O1:基本优化,编译器会生成更快的代码

◆-O2:-O1的升级版,推荐使用

◆-O3:这是目前最高的优化级别,它会使用更多的编译时间,虽然它生成的代码只会比-O2块一点点(GCC3.x中是这样的,但是在GCC4.x中有时候可能还没有-O2快),但是它会增大二进制文件的体积并让他们更消耗内存,因此在GCC4.x中-O3是不推荐的。

◆-Os:这个级别是用来优化代码尺寸的,他只是给一些CPU缓存或是磁盘空间小的机器使用

-O0: 无优化。

-O和-O1: 使用能减少目标代码尺寸以及执行时间并且不会使编译时间明显增加的优化。在编译大型程序的时候会显著增加编译时内存的使用。

-O2: 包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。编译器不执行循环展开以及函数内联。此选项将增加编译时间和目标文件的执行性能。

-Os: 可以看成 -O2.5,专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项,并且执行专门减小目标文件大小的优化选项。适用于磁盘空间紧张时使用。但有可能有未知的问题发生,况且目前硬盘容量很大,常用程序无必要使用。

-O3: 打开所有 -O2 的优化选项外增加 -finline-functions、-funswitch-loops、-fgcse-after-reload 优化选项。相对于 -O2 性能并未有较多提高,编译时间也最长,生成的目标文件也更大更占内存,有时性能不增反而降低,甚至产生不可预知的问题(包括错误),所以并不被大多数软件安装推荐,除非有绝对把握方可使用此优化级别。

修改GCC编译参数,提高编译优化级别,此方法适用于所有通过GCC编译安装的程序,不止Nginx。稳妥起见用 -O2,这也是大多数软件编译推荐的优化级别。查看Nginx源码文件 auto/cc/gcc,搜索NGX_GCC_OPT,默认GCC编译参数为-O,可以直接修改内容为NGX_GCC_OPT="-O2"或者在 ./configure配置时添加--with-cc-opt='-O2'选项。

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: PHP+JS聊天群

相關課文
  • Linux系統下word文档轉成pdf的辦法

  • ubuntu和debian安裝nginx或者tengine報錯, 找不到pcre依賴庫的解決辦法

  • linux終耑下借助awk命令查詢篩出網站access.log日志裡的統計信息

  • 常見的web中間件請求返回狀態碼

我要說說
網上賓友點評