编译器flags

PGI

fortran:

  • -Mfixed、-Mnofree、-Mnofreeform:强制对源文件按照固定格式进行语法分析,默认.f或.F文件为固定格式

  • -i2:将INTERGER变量按照2比特处理

  • -i4:将INTERGER变量按照2比特处理

  • -i2:将INTERGER变量按照2比特处理

GCC

-Wl,option Pass option as an option to the linker. If option contains commas, it is split into multiple options at the commas. You can use this syntax to pass an argument to the option. For example, -Wl,-Map,output.map passes -Map output.map to the linker. When using the GNU linker, you can also get the same effect with -Wl,-Map=output.map.

-Wl选项告诉编译器将后面的参数传递给链接器

-Wline-truncation
			Warn when a source code line will be truncated. This option is implied by -Wall. 			For free-form source code, the default is -Werror=line-truncation such that 						truncations are reported as error.
解决办法:试试gfortran的-ffree-line-length-none
-Wdisabled-optimization 当某趟优化被禁用时给出警告
-fguess-branch-probability 启用分支预测
-foptimize-register-move 进行全寄存器传送优化
-foptimize-sibling-calls 优化同级递归和尾递归
-fthread-jumps 进行跳转线程优化
-ffree-form
-ffixed-form
指定源文件使用的布局。Fortran 90中引入了自由格式布局。固定格式传统上用于较旧的Fortran程序。如果未指定任何选项,则源表单由文件扩展名确定。

-ffixed-line-length-n
Set column after which characters are ignored in typical fixed-form lines in the source file, and, unless -fno-pad-source, through which spaces are assumed (as if padded to that length) after the ends of short fixed-form lines.

Popular values for n include 72 (the standard and the default), 80 (card image), and 132 (corresponding to “extended-source” options in some popular compilers). n may also be ‘none’, meaning that the entire line is meaningful and that continued character constants never have implicit spaces appended to them to fill out the line. -ffixed-line-length-0 means the same thing as -ffixed-line-length-none.
-ffree-form                 假定源文件是自由格式
Fixed Format(固定格式) Free Format (自由格式) Fixed Format(固定格式)是属于旧式的写法,它在编写版面上有很多 限制。
如果想用调试器执行一个可执行文件, 在用gcc编译时必须加上-g选项:

gcc -o sum sum.c -g

加上-g选项以后,gcc在编译是会做以下额外的操作:

1. 创建符号表,符号表包含了程序中使用的变量名称的列表。

2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

当使用的优化级别为-O1或更高时,编译器会为cpp设置宏__OPTIMIZE__。

Fortran缺省使用cpp。只有你在命令行上指定了-ftpp选项才会使用Fortran预处理程序。

OpenMPI

CPPFLAGS
Flags added when invoking the preprocessor (C or C++)
LDFLAGS
Flags added when invoking the linker (C, C++, or Fortran)
LIBS
Libraries added when invoking the linker (C, C++, or Fortran)
CC
C compiler
CFLAGS
C compiler flags
CXX
C++ compiler
CXXFLAGS
C++ compiler flags
FC
Fortran compiler
FCFLAGS
Fortran compiler flags

优化选项

-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’选项。

发布了27 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42306122/article/details/102149226
今日推荐