關於浙大OJ上的對C++的編譯方式

  • 浙大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 參數,可能在調試時,會將部分變量等優化掉,使得添加查看時,無法查看變量取值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章