當前位置:首頁 » 編程軟體 » gcc編譯release

gcc編譯release

發布時間: 2022-04-15 19:30:46

linux下gcc編譯的代碼.release和debug版 有什麼具體差距

利用gcc的-DDEBUG選項。
1.源文件DEBUG.c中有:
#include<stdio.h>
intmain(intargc,char*argv[])
{
#ifdefDEBUG
printf("DEBUGisdefinded ");
#else
printf("DEBUGisnotdefinded ");
#endif
}
2.Makefile文件為:
DEBUG=
CFLAG=-g
debug:DEBUG.c
gcc$(DEBUG)$(CFLAG)-o$@$^
3.輸入:gcc-g-odebugDEBUG.c
./debug
out:DEBUGisnotdefinded
4.輸入:gcc-DDEBUG-g-odebugDEBUG.c
./debug
out:DEBUGisdefinded

這樣DEBUG版本和release版本都有了.

⑵ 如何使用Cmake生成debug版本和release版本的程序

在Visual Studio中我們可以生成debug版本和release版本的程序,使用Cmake我們也可以達到同樣的效果。debug版本的項目生成的可執行文件需要有調試信息並且不需要進行優化,而release版本的不需要調試信息但是需要優化。這些特性在gcc/g++中通過編譯時的參數來決定的,如果將優化程度調到最高需要設置 -O3 ,最低的是 -O0 即不做優化,添加調試信息的參數是 -g -ggdb,如果不添加這個參數,調試信息就不會被包含在生成的二進制中

⑶ dev c++ 中的 gcc4.8.1 profiling / release / debug 三種編譯器 有什麼區別么

debug
調試,可以對軟體進行單步執行、堆棧跟蹤、調試等操作來發現bug
release
發行版,如果最終調試後程序沒有明顯bug,可以作為可用的軟體分享給他人使用就可以使用這個選項編譯。
profiling
性能分析。可以對軟體執行過程中的cpu利用率,內存佔有進行分析。也可以用來發現、分析異常、bug。

⑷ C語言IDE的Debug和Release版本在命令行的編譯選項上有什麼區別

編譯調試大型程序時使用DEBUG,這種情形下不做任何的代碼優化,且會包含所有的調試信息。

RELEASE發布版本,經過DEBUG版本確定沒有問題就可以用這個生成帶有代碼優化和無調試信息的版本,用來給用戶使用

編譯選項的區別么,依賴具體的編譯器,可以參考網頁鏈接

⑸ gcc的三級優化到底優化了哪些

這是個很惡心的問題。我乍一看覺得應該是655我再vc6.0上實驗(Debug模式)發現結果是555(vc6debug模式匯編代碼)004013A8movdwordptr[ebp-4],5;先將5給[ebp-4]004013AFmoveax,dwordptr[ebp-4];再將5傳給eax004013B2pusheax;將eax壓棧004013B3movecx,dwordptr[ebp-4];將5==>ecx004013B6movdwordptr[ebp-20h],ecx;將5==>[ebp-20h]004013B9movedx,dwordptr[ebp-20h];將5==>edx004013BCpushedx;將5壓棧004013BDmoveax,dwordptr[ebp-4]004013C0pusheax;還是將5壓棧004013C1pushoffsetstring"%d%d%d\n"(00426000)004013C6movecx,dwordptr[ebp-4]004013C9addecx,1004013CCmovdwordptr[ebp-4],ecx004013CFcallprintf(00401620)004013D4addesp,10h顯而易見結果是555了。不過我為了驗證又在release下運行了一把,發現結果竟然是656(vc6release模式匯編代碼),10hxoreax,eaxret暈。編譯器給優化了。。。顯而易見結果是656了還是不死心再看看linux下gcc編譯的發現結果也是656(gccdebug)00401326|.C744241C050>movdwordptr[esp+1C],5;|現將5放到[esp+1c]中0040132E|.8B44241Cmoveax,dwordptr[esp+1C];|5==>eax00401332|.FF44241Cincdwordptr[esp+1C];|[esp+1c]++;[esp+1c]等於6了00401336|.8B54241Cmovedx,dwordptr[esp+1C];|6==>edx0040133A|.8954240Cmovdwordptr[esp+C],edx;|這相當於pushedx也就是將6壓棧0040133E|.89442408movdwordptr[esp+8],eax;|這相當於pusheax也就是將5壓棧00401342|.8B44241Cmoveax,dwordptr[esp+1C];|將6放到eax中00401346|.89442404movdwordptr[esp+4],eax;|這相當於pusheax也就是將6壓棧0040134A|.C70424243040>movdwordptr[esp],00403024;|ASCII"%d%d%d",LF00401351|.E836060000call;\printf所以結果是656啦gcc的release和debug一樣。。還是不死心。有在vc2005的debug下運行了一把發現結果是656??(vc2005debug匯編代碼)00411B4Cmovdwordptr[ebp-0Ch],5;5==>[EBP-0c]00411B53moveax,dwordptr[ebp-0Ch]。;5==>eax00411B56movdwordptr[ebp-1194h],eax5==>[ebp-1194h]00411B5Cmovecx,dwordptr[ebp-0Ch];5==>ecx00411B5Faddecx,1;ecx++;ecx==6;00411B62movdwordptr[ebp-0Ch],ecx;6==>[ebp-0Ch]00411B65movesi,esp00411B67movedx,dwordptr[ebp-0Ch];6==>edx00411B6Apushedx;將6壓棧00411B6Bmoveax,dwordptr[ebp-1194h];5==>eax00411B71pusheax;將5壓棧00411B72movecx,dwordptr[ebp-0Ch];6==>ecx00411B75pushecx;將6壓棧00411B76pushoffsetstring"%d%d%d\n"(41E9ACh)00411B7Bcalldwordptr[__imp__printf(423780h)]00411B81addesp,10h結果是656唉。看來結果就是656啦。。vc2005和以後版本都注意到了這個問題。我也說不上哪個正確,你又相信哪個呢?

⑹ 在linux下編譯軟體和第三方庫時不分debug和release嗎

Linux系統編譯軟體是有debug版和release版本的區分。Linux下在開發軟體的過程中,會編譯成debug版的,用於程序調試。以gcc/g++編譯命令來說,在編譯產生.o文件時(必須是產生.o文件的那一步才能編譯成調試版),加入-g編譯選項,編譯出來的就是debug版,這個版本可以用gdb調試。
而如果軟體開發完成需要發布的時候,就需要在編譯時加上-O選項(不能加-g選項了),表示對代碼進行編譯優化,這時編譯出來的軟體就相當於是release版本了。

⑺ C語言編譯器有哪些各有什麼特點

C語言編譯器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。

其中比較經典的VC++,微軟的產品,編譯器,鏈接器,運行,調試等功能於一體的強大開發工具,特點是功能十分強大,對於新手來說需要一段時間去摸索。
dev-C++是windows下一款開發c/c++的開發環境,使用gcc為編譯器,遵循標准,功能比較強大,語法高量,可以進行單步調試(這對排除錯誤很重要),進行斷點設置等功能,遵循C標准,是一款很強大的開發工具。
C-Free是一款支持多種編譯器的專業化C/C++集成開發環境(IDE)。利用C-Free,使用者可以輕松地編輯、編譯、連接、運行、調試C/C++程序。
TC 2.0:Borland公司的產品,在dos界面下編譯運行,小巧、靈活,但是不能使用滑鼠。
win-TC:在tc2.0的基礎上加上了界面,能夠使用滑鼠,具有語法高量,可以嵌入匯編等特點,對新手一些,拜託了不能用滑鼠的困難。

編譯器,簡單講,就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器(Linker) → 可執行程序 (executables)。

⑻ Dev C++中的TDM-GCC 4.9.2 64-bit Release是什麼意思

TDM-GCC是編譯器的類型。
4.9.2是版本號。
32-bit和64-bit是編譯出的程序位數。
Debug是調試模式,程序會寫入調試信息,程序會很大且較慢,但是方便程序員調試。
Release是發布模式,程序會進行優化,程序會小且運行較快。
Profiling和Debug差不多,只是這是用來分析CPU效率的,在某些編譯器你是看不到這個的(例如VS)。

熱點內容
linux分區表查看 發布:2025-03-16 21:20:17 瀏覽:643
java多個if 發布:2025-03-16 21:15:46 瀏覽:694
可樂存儲 發布:2025-03-16 21:15:07 瀏覽:871
ios遷移安卓用什麼助手 發布:2025-03-16 20:12:42 瀏覽:720
python異常值處理 發布:2025-03-16 20:12:42 瀏覽:581
POtn編程 發布:2025-03-16 20:06:11 瀏覽:776
競彩資金怎麼配置 發布:2025-03-16 20:01:57 瀏覽:10
在終端中打開編譯環境 發布:2025-03-16 19:57:34 瀏覽:601
sqlserver安裝資料庫 發布:2025-03-16 19:57:01 瀏覽:36
如何關掉廣告推送安卓 發布:2025-03-16 19:43:32 瀏覽:959