當前位置:首頁 » 編程軟體 » 編譯選項

編譯選項

發布時間: 2022-01-14 05:24:18

㈠ 求助:GCC編譯選項加上

Debug選項:
在 gcc編譯源代碼時指定-g選項可以產生帶有調試信息的目標代碼,gcc可以為多個不同平台上帝不同調試器提供調試信息,默認gcc產生的調試信息是為 gdb使用的,可以使用-gformat 指定要生成的調試信息的格式以提供給其他平台的其他調試器使用.常用的格式有
-ggdb:生成gdb專 用的調試信息,使用最適合的格式(DWARF 2,stabs等)會有一些gdb專用的擴展,可能造成其他調試器無法運行.
-gstabs:使用 stabs格式,不包含gdb擴展,stabs常用於BSD系統的DBX調試器.
-gcoff:產生COFF格式的調試信息,常用於System V下的SDB調試器;
-gxcoff:產生XCOFF格式的調試信息,用於IBM的RS/6000下的DBX調試器;
-gdwarf- 2:產生DWARF version2 的格式的調試信息,常用於IRIXX6上的DBX調試器.GCC會使用DWARF version3的一些特性.
可 以指定調試信息的等級:在指定的調試格式後面加上等級:
如: -ggdb2 等,0代表不產生調試信息.在使用-gdwarf-2時因為最早的格式為-gdwarf2會造成混亂,所以要額外使用一個-glevel來指定調試信息的 等級,其他格式選項也可以另外指定等級.
gcc可以使用-p選項指定生成信息以供porf使用.

㈡ 如何設置編譯選項 ubuntu

這個就要看你的具體的編譯器了。例如:在 UBUNTU 系統下,使用的是 gcc C 語言編譯器,那麼就一定要遵循 gcc 的編譯選項規定。例如:gcc myfile.c,該命令產生的是一個預設的輸出運行文件 a.out;gcc -o myrunfile myfile.c,該命令將會產生一個輸出文件為 myrunfile 的運行文件;gcc -c myfile.c,該命令是只產生一個 myfile.o 的中間文件,只編譯、不連接。除此之外,你還需要注意 makefile 文件的編寫規則,因為該文件才是真正要把所有的源程序的編譯選項按照一定的規則寫到 makefile 文件中,然後再整體對源程序進行編譯、連接。

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

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

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

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

㈣ (arm, linux): gcc的編譯選項「-MT $(*F).o -MF dep/$(@F).d」是什麼意思

你這是makefile裡面截出來的吧。。。。。。你問的那些不是gcc的命令,是make的自動變數。。。。。。。。。。。。。。。。。

$(*F)是目標的文件名。比如你的目標是src/foo.c,那$(*F)就是foo

$@代表make中的目標文件集合(所有目標文件),$(@F)是指這個目標文件集合裡面所有的不包含路徑的文件名。比如你的$@是src/foo.o,那$(@F)就是foo.o

㈤ Linux 編譯選項

  1. gcc -E source_file.c
    -E,只執行到預編譯。直接輸出預編譯結果。

  2. gcc -S source_file.c
    -S,只執行到源代碼到匯編代碼的轉換,輸出匯編代碼。

  3. gcc -c source_file.c
    -c,只執行到編譯,輸出目標文件。

  4. gcc (-E/S/c/) source_file.c -o output_filename
    -o, 指定輸出文件名,可以配合以上三種標簽使用。
    -o 參數可以被省略。這種情況下編譯器將使用以下默認名稱輸出:
    -E:預編譯結果將被輸出到標准輸出埠(通常是顯示器)
    -S:生成名為source_file.s的匯編代碼
    -c:生成名為source_file.o的目標文件。
    無標簽情況:生成名為a.out的可執行文件。

  5. gcc -g source_file.c
    -g,生成供調試用的可執行文件,可以在gdb中運行。由於文件中包含了調試信息因此運行效率很低,且文件也大不少。
    這里可以用strip命令重新將文件中debug信息刪除。這是會發現生成的文件甚至比正常編譯的輸出更小了,這是因為strip把原先正常編譯中的一些額外信息(如函數名之類)也刪除了。用法為 strip a.out

  6. gcc -s source_file.c
    -s, 直接生成與運用strip同樣效果的可執行文件(刪除了所有符號信息)。

  7. gcc -O source_file.c
    -O(大寫的字母O),編譯器對代碼進行自動優化編譯,輸出效率更高的可執行文件。
    -O 後面還可以跟上數字指定優化級別,如:
    gcc -O2 source_file.c
    數字越大,越加優化。但是通常情況下,自動的東西都不是太聰明,太大的優化級別可能會使生成的文件產生一系列的bug。一般可選擇2;3會有一定風險。

  8. gcc -Wall source_file.c
    -W,在編譯中開啟一些額外的警告(warning)信息。-Wall,將所有的警告信息全開。

  9. gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
    -l, 指定所使用到的函數庫,本例中鏈接器會嘗試鏈接名為libxxx.a的函數庫。
    -L,指定函數庫所在的文件夾,本例中鏈接器會嘗試搜索/path/to/lib文件夾。
    -I, 指定頭文件所在的文件夾,本例中預編譯器會嘗試搜索/path/to/include文件夾。

㈥ 中如下的編譯選項什麼意思

1.編譯目標文件
icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o
2.連接產生可執行文件
icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out
這里的東西較多,看上去比較復雜。
1.對於第一步,編譯出目標文件。這裡面的幾個編譯選項:
-O3 :表示最大可能優化級別。各種循環優化都執行了,並且各種文件級性質也用來改善性能
-openmp:採用了openmp並行編程
-std=c99:ANSI C是89年成為了標准,被ISO認證。之後99年ISO更新了新的C標准。所以-std用來指明編譯的C標准。在某些情況下,如果使用GCC,可能在有沖突的時候使用其他標准,比如:-std=gnu89
-DMKL_ILP64:這個是intel提供的編譯選項,主要是一個平台的指示。
-I:指定頭文件目錄
-o:重命名。
2.對於第二步,鏈接過程。其中幾個編譯選項:
-openmp:同上
-Wl:Wl選項告訴編譯器將後面的參數傳遞給鏈接器。
--start-group 和--stop-group:庫文件參數傳遞的開始和結束。
--offload-option,mic:使用offload方式使用協處理器進行運算
轉自CSDN社區beglorious的專欄

㈦ gcc 的編譯選項 -MD 是什麼意思

MD 是一個參數.
gcc提供了大量的警告選項,對代碼中可能存在的問題提出警 告,通常可以使用-Wall來開啟以下警告:
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat
-Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration
-Wcomment -Wformat -Wmain (only for C/ObjC and unless
-ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses
-Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point
-Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1
-Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above)
-Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value
-Wunused-variable
unused-function:警告聲明但是沒有定義的static函數;
unused- label:聲明但是未使用的標簽;
unused-parameter:警告未使用的函數參數;
unused-variable:聲明但 是未使用的本地變數;
unused-value:計算了但是未使用的值;
format:printf和scanf這樣的函數中的格式字元 串的使用不當;
implicit-int:未指定類型;
implicit-function:函數在聲明前使用;
char- subscripts:使用char類作為數組下標(因為char可能是有符號數);
missingbraces:大括弧不匹配;
parentheses: 圓括弧不匹配;
return-type:函數有無返回值以及返回值類型不匹配;
sequence-point:違反順序點的代碼,比如 a[i] = c[i++];
switch:switch語句缺少default或者switch使用枚舉變數為索引時缺少某個變數的case;
strict- aliasing=n:使用n設置對指針變數指向的對象類型產生警告的限製程度,默認n=3;只有在-fstrict-aliasing設置的情況下有 效;
unknow-pragmas:使用未知的#pragma指令;
uninitialized:使用的變數為初始化,只在-O2時有 效;

㈧ Linux上怎麼把GCC的編譯選項設置到makefile文件中

這個沒有什麼特殊的要求。你只要按照你需要的正確的語法規則和編譯順序,將 gcc 編譯器對 C 語言源程序的編譯選項(例如:對源程序只編譯不連接的選項為:-c、或者是生成指定的運行文件:-o my_outputfile,等等)寫到 makefile 文本文件中即可。 但是一定要注意它們之間在 makefile 文件之間的前後順序。

㈨ gcc編譯選項 -w是什麼意思

不同版本的動態庫是為了升級方便,舊的程序需要與舊的庫鏈接,新的程序與新的.

一般的做法是把libabc.so連接(symbolic link, ln -s libabc.so.N libabc.so)到最新的版本,這樣以後的新程序,在用gcc -labc的時候,都會鏈接到新的版本.舊的已經鏈接好的程序並不會產生不兼容的問題,因為舊程序在過去已經鏈接過了(動態庫鏈接的信息可以用ldd來查看: ldd /bin/ls).

symbolic link, ln是推薦的維護版本的辦法,不建議更改文件名.

如果你要有一個方便的辦法鏈接舊的版本, 建一個舊的版本的symbolic link就可以了,libabc11.so
ln -s libabc.so.11 libabc11.so
gcc -labc11...
以上回答你滿意么?

㈩ vc的各編譯選項都是什麼意思

VC編譯選項

/Od 禁用優化(默認值) disable optimizations (default)
/Ox 最大化選項。(/Ogityb2 /Gs) maximum opts. (/Ogityb1 /Gs)
/Og 啟用全局優化 enable global optimization
/Oy[-] 啟用框架指針省略 enable frame pointer omission
/Oi 啟用內建函數 enable intrinsic functions

-代碼生成-
/G3 為 80386 進行優化 optimize for 80386
/G4 為 80486 進行優化 optimize for 80486
/GR[-] 啟用 C++ RTTI enable C++ RTTI
/G5 為 Pentium 進行優化 optimize for Pentium
/G6 為 Pentium Pro 進行優化 optimize for Pentium Pro
/GX[-] 啟用 C++ 異常處理(與 /EHsc 相同) enable C++ EH (same as /EHsc)
/EHs 啟用同步 C++ 異常處理 enable synchronous C++ EH
/GD 為 Windows DLL 進行優化 optimize for Windows DLL
/GB 為混合模型進行優化(默認) optimize for blended model (default)
/EHa 啟用非同步 C++ 異常處理 enable asynchronous C++ EH
/Gd __cdecl 調用約定 __cdecl calling convention
/EHc extern「C」默認為 nothrow extern "C" defaults to nothrow
/Gr __fastcall 調用約定 __fastcall calling convention
/Gi[-] 啟用增量編譯 enable incremental compilation
/Gz __stdcall 調用約定 __stdcall calling convention
/Gm[-] 啟用最小重新生成 enable minimal rebuild
/GA 為 Windows 應用程序進行優化 optimize for Windows Application
/Gf 啟用字元串池 enable string pooling
/QIfdiv[-] 啟用 Pentium FDIV 修復 enable Pentium FDIV fix
/GF 啟用只讀字元串池 enable read-only string pooling
/QI0f[-] 啟用 Pentium 0x0f 修復 enable Pentium 0x0f fix
/Gy 分隔鏈接器函數 separate functions for linker
/GZ 啟用運行時調試檢查 enable runtime debug checks
/Gh 啟用鉤子函數調用 enable hook function call
/Ge 對所有函數強制堆棧檢查 force stack checking for all funcs
/Gs[num] 禁用堆棧檢查調用 disable stack checking calls

-輸出文件-
/Fa[file] 命名程序集列表文件 name assembly listing file
/Fo 命名對象文件 name object file
/FA[sc] 配置程序集列表 configure assembly listing
/Fp 命名預編譯頭文件 name precompiled header file
/Fd[file] 命名 .PDB 文件 name .PDB file
/Fr[file] 命名源瀏覽器文件 name source browser file
/Fe 命名可執行文件 name executable file
/FR[file] 命名擴展 .SBR 文件 name extended .SBR file
/Fm[file] 命名映射文件 name map file

-預處理器-
/FI 命名強制包含文件 name forced include file
/C 不吸取注釋 don't strip comments
/U 移除預定義宏 remove predefined macro
/D{=|#} 定義宏 define macro
/u 移除所有預定義宏 remove all predefined macros
/E 將預處理定向到標准輸出 preprocess to stdout
/I 添加到包含文件的搜索路徑 add to include search path
/EP 將預處理定向到標准輸出,不要帶行號 preprocess to stdout, no #line
/X 忽略「標准位置」 ignore "standard places"
/P 預處理到文件 preprocess to file

-語言-
/Zi 啟用調試信息 enable debugging information
/Zl 忽略 .OBJ 中的默認庫名 omit default library name in .OBJ
/ZI 啟用調試信息的「編輯並繼續」功能 enable Edit and Continue debug info
/Zg 生成函數原型 generate function prototypes
/Z7 啟用舊式調試信息 enable old-style debug info
/Zs 只進行語法檢查 syntax check only
/Zd 僅要行號調試信息 line number debugging info only
/vd{0|1} 禁用/啟用 vtordisp disable/enable vtordisp
/Zp[n] 在 n 位元組邊界上包裝結構 pack structs on n-byte boundary
/vm 指向成員的指針類型 type of pointers to members
/Za 禁用擴展(暗指 /Op) disable extensions (implies /Op)
/noBool 禁用「bool」關鍵字 disable "bool" keyword
/Ze 啟用擴展(默認) enable extensions (default)

- 雜項 -
/?, /help 列印此幫助消息 print this help message
/c 只編譯,不鏈接 compile only, no link
/W 設置警告等級(默認 n=1) set warning level (default n=1)
/H 最大化外部名稱長度 max external name length
/J 默認 char 類型是 unsigned default char type is unsigned
/nologo 取消顯示版權消息 suppress right message
/WX 將警告視為錯誤 treat warnings as errors
/Tc 將文件編譯為 .c compile file as .c
/Yc[file] 創建 .PCH 文件 create .PCH file
/Tp 將文件編譯為 .cpp compile file as .cpp
/Yd 將調試信息放在每個 .OBJ 中 put debug info in every .OBJ
/TC 將所有文件編譯為 .c compile all files as .c
/TP 將所有文件編譯為 .cpp compile all files as .cpp
/Yu[file] 使用 .PCH 文件 use .PCH file
/V 設置版本字元串 set version string
/YX[file] 自動的 .PCH 文件 automatic .PCH
/w 禁用所有警告 disable all warnings
/Zm 最大內存分配(默認為 %) max memory alloc (% of default)

-鏈接-
/MD 與 MSVCRT.LIB 鏈接 link with MSVCRT.LIB
/MDd 與 MSVCRTD.LIB 調試庫鏈接 link with MSVCRTD.LIB debug lib
/ML 與 LIBC.LIB 鏈接 link with LIBC.LIB
/MLd 與 LIBCD.LIB 調試庫鏈接 link with LIBCD.LIB debug lib
/MT 與 LIBCMT.LIB 鏈接 link with LIBCMT.LIB
/MTd 與 LIBCMTD.LIB 調試庫鏈接 link with LIBCMTD.LIB debug lib
/LD 創建 .DLL Create .DLL
/F 設置堆棧大小 set stack size
/LDd 創建 .DLL 調試庫 Create .DLL debug libary
/link [鏈接器選項和庫] [linker options and libraries]

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:82
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:956
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:975
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:798
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:664
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:431
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:342
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:126
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301