g++中的常用编译优化参数

g++ -m64 -c -o *.o -g -Ofast -std=c++11 -mcx16 -m64 -maes -mfpmath=sse -mavx512f -mavx512dq -mavx512ifma -mavx512cd -mavx512bw -mavx512vl -mavx512vbmi -march=x86-64 -mcmodel=large -Wall -Wno-write-strings -fno-defer-pop -fsigned-char -pipe
  • -m64:生成64位目标文件。指定生成64位代码。
  • -c:只编译源文件,生成目标文件,而不进行链接。常用于生成目标文件以供后续链接。
  • -o *.o:指定编译输出的目标文件名。这里的*.o表示输出的目标文件名是根据源文件自动生成的。
  • -g:生成调试信息。使得编译生成的目标文件包含调试信息,方便调试程序。
  • -Ofast:启用快速优化。该选项打开了多个优化选项,这样编译器可以尽量优化代码运行速度。
  • -std=c++11:指定使用的C++标准版本为C++11。这个参数告诉编译器要按照C++11的标准进行编译。
  • -mcx16:启用扩展处理器功能。该选项启用了对扩展处理器功能的支持。
  • -maes:启用AES指令集。该选项启用了对AES指令集的支持。
  • -mfpmath=sse:使用SSE指令集进行浮点数运算。该选项指定使用SSE指令集进行浮点数运算,提高程序的执行效率。
  • -mavx512f:启用AVX-512指令集的基础指令。该选项启用了AVX-512指令集的基础指令支持。
  • -mavx512dq:启用AVX-512双字队列指令。该选项启用了AVX-512双字队列指令的支持。
  • -mavx512ifma:启用AVX-512整数乘法指令。该选项启用了AVX-512整数乘法指令的支持。
  • -mavx512cd:启用AVX-512冲突检测指令。该选项启用了AVX-512冲突检测指令的支持。
  • -mavx512bw:启用AVX-512字节/字/字块指令。该选项启用了AVX-512字节/字/字块指令的支持。
  • -mavx512vl:启用AVX-512向量长度指令。该选项启用了AVX-512向量长度指令的支持。
  • -mavx512vbmi:启用AVX-512位变换指令。该选项启用了AVX-512位变换指令的支持。
  • -march=x86-64:生成编译针对x86-64架构的代码。指定生成针对x86-64架构的目标代码。
  • -mcmodel=large:使用大模型内存模型。该选项指定使用较大的内存模型,以便处理大型数据和代码。
  • -Wall:打开警告选项。该选项打开所有警告信息,使得编译器可以提示潜在的问题。
  • -Wno-write-strings:关闭字符串字面值警告。该选项关闭字符串字面值赋值给非const char*类型的警告。
  • -fno-defer-pop:不推迟栈指针的修复。该选项告诉编译器不要推迟修复栈指针,以提高程序的性能。
  • -fsigned-char:将char类型视为有符号类型。该选项告诉编译器将char类型视为有符号类型。
  • -pipe:使用管道而不是临时文件。该选项使用管道来进行编译和链接过程中的数据传输,提高编译速度。

其中各个参数可根据自己需要修改,比如m64可以是m32,-Ofast可以是-O3等等,这里仅仅列举了极少部分,但我理解这些指令集应该也比较常用。

你可能感兴趣的:(linux,centos,c++)