浙大OJ平台上使用的是GNU gcc/g++ 4.7.2版本来对提交的代码进行编译。于是想了解一下这个编译器。
该编译器关于对C++11的支持情况。尽管编译器版本可以支持11标准,但是如果对11标准下的代码,编译时缺少-std=c++11 或 -std=gnu++11作为编译参数,仍无法正常编译通过。
关于 GNU C++ Library的文档以及GNU C Library的文档
- 关于g++的参数的设置,以下选用Dev-C++做描述:
在Dev-C++选项栏上打开工具->编译选项。
在弹出的窗口中点击编译器:在编译时加入以下命令中添加“-lm –static”,并在可选框内打钩。
之后点击代码生成/优化:
在C编译器中的“支持所有ANSI C标准”项置为Yes以及“不将asm、inline、typeof作为关键字(-fno-asm)”项置为Yes,其余不变;
在代码生成中的“优化级别(-Ox)”项置为Med,其余不变;
在代码警告中的“显示最多警告信息(-Wall)”项置为Yes,其余不变。
经过设置之后,可以生成以下的编译参数
-ansi -fno-asm -O2 -Wall -lm –static
其中各种参数的含义及作用可以参考《GCC中文手册》作者:liangxiaxu.
此外如果添加 -O2 参数,可能在调试时,会将部分变量等优化掉,使得添加查看时,无法查看变量取值。
关于浙大OJ上的对C++的编译方式
最新推荐文章于 2023-05-05 21:08:47 发布