g編譯o
① gcc. g++ 編譯後生成的.O文件有何不同
從總體來看,沒什麼不同,都是
文件頭、段表、段內容這樣的一個格式。
往內容來看,兩者有區別的,g++是把文件當C++,gcc是把文件當作C。首先是符號生成規則(name mangling)不一樣,還有就是連接的庫也不一樣。
② gcc編譯時把-o放在-g前面為什麼會報錯
這是因為-g是選項,後面不需要給參數,而-o是參數,後面需要加上輸出文件名稱,所以,gcc test.c -o -g test,會生成一個-g的輸出文件,而後面的test就成非法參數了。
③ gcc怎麼編譯.o
gcc中-c和-o是編譯時可選的參數
-加-c, (compile)只編譯生成中間同名目標文件,不鏈接
-加-o,(output)指定輸出文件名,該文件為可執行文件,不加-o會默認生成a.out
舉例:
gcc -c hello.c 編譯生成hello.o文件
gcc -o hello hello.c 生成可執行文件hello
④ g 如何編譯出UTF-8編碼的exe
把源文改為utf-8編碼就可以了,g++默認的編譯編碼就是utf-8的,也可以使用-fexec-charset=charset,此選項指定窄字元或窄字元串的字面值常量的內部編碼方式,默認為UTF-8。例如指定此選項為GBK,則窄字元或窄字元串常量將會以GBK編碼方式存儲而不是默認的UTF-8編碼方式。
例如:
g++-fexec-charset=UTF-8main.cpp-omain.exe&&main.exe
#include<iostream>
usingnamespacestd;
intmain(intargc,charconst*argv[])
{
cout<<"你好。"<<endl;
return0;
}
⑤ gcc -g -o -c分別是什麼意思
-c和-o都是gcc編譯器的可選參數。
-c表示只編譯(compile)源文件但不鏈接,會把.c或.cc的c源程序編譯成目標文件,一般是.o文件。-o用於指定輸出(out)文件名。不用-o的話,一般會在當前文件夾下生成默認的a.out文件作為可執行程序。
例如:
gcc -c test.c將生成test.o的目標文件
gcc -o app test.c將生成可執行程序app
gcc -c a.c -o a.o表示把源文件a.c編譯成指定文件名a.o的中間目標文件(其實在這里,把-o a.o省掉,效果是一樣的,因為中間文件默認與源文件同名,只是後綴變化)。
1、如果GCC不帶-C參數,編譯一個源代碼文件(test.c)。那麼會自動將編譯和鏈接一步完成,並生成可執行文件。可執行文件可以有-o參數指定(test.o)
2、如果是多個文件,則需要先編譯成中間目標文件(一般是.o文件),在鏈接成可執行文件,一般習慣目標文件都是以.o後綴,也沒有硬性規定可執行文件不能用.o文件。
(5)g編譯o擴展閱讀:
gcc:GNU編譯器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go語言的前端,也包括了這些語言的庫(如libstdc++、libgcj等等)。GCC的初衷是為GNU操作系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體。此處,「自由」的含義是它尊重用戶的自由。
基本用法:
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。
-O,對程序進行優化編譯、鏈接,採用這個選項,整個源代碼會在編譯、鏈接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、鏈接的速度就相應地要慢一些。