如何用MinGW 命令列編譯鏈結c c

2021-09-30 03:36:39 字數 1464 閱讀 5944

一直用vs,看現在eclipse很火,便想弄一下玩玩,用到了mingw,繼而用到了gcc,對gcc相當的不熟悉,從頭開始學一些簡單的吧。

簡單的gcc用法~

gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。

一. 常用編譯命令選項

假設源程式檔名為test.c。

1. 無選項編譯鏈結

用法:#gcc test.c

作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案。這裡未指定輸出檔案,預設輸出為a.out。編譯成功後可以看到生成了乙個a.out的檔案。在命令列輸入./a.out 執行程式。./表示在當前目錄,a.out為可執行程式檔名。

2. 選項 -o

用法:#gcc test.c -o test

作用:將test.c預處理、彙編、編譯並鏈結形成可執行檔案test。-o選項用來指定輸出檔案的檔名。輸入./test執行程式。

3. 選項 -e 《大寫,注意》

用法:#gcc -e test.c -o test.i

or 作用:將test.c預處理輸出test.i檔案。

4. 選項 -s 《大寫,注意》

用法:#gcc -s test.i

作用:將預處理輸出檔案test.i彙編成test.s檔案。

5. 選項 -c

用法:#gcc -c test.s

作用:將彙編輸出檔案test.s編譯輸出test.o檔案。

6. 無選項鏈結

用法:#gcc test.o -o test

作用:將編譯輸出檔案test.o鏈結成最終可執行檔案test。輸入./test執行程式。

7. 選項-o

用法:#gcc -o1 test.c -o test

作用:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長。輸入./test執行程式。

二. 多原始檔的編譯方法

如果有多個原始檔,基本上有兩種編譯方法:

[假設有兩個原始檔為test.c和testfun.c]

1. 多個檔案一起編譯

用法:#gcc testfun.c test.c -o test

作用:將testfun.c和test.c分別編譯後鏈結成test可執行檔案。

2. 分別編譯各個原始檔,之後對編譯後輸出的目標檔案鏈結。

用法:

#gcc -c testfun.c //將testfun.c編譯成testfun.o

#gcc -c test.c //將test.c編譯成test.o

#gcc  testfun.o test.o -o test //將testfun.o和test.o鏈結成test

以上兩種方法相比較,第一中方法編譯時需要所有檔案重新編譯,而第二種方法可以只重新編譯修改的檔案,未修改的檔案不用重新編譯。

筆記 mac上如何用命令列編譯jni

平常開發jni都是在android studio自動關聯ndk編譯的,有時候編寫部落格為了輕量化需要用命令列模式,不會讓專案太重,依賴於ide。現在流行的linux系統主要是ubuntu centos fedora,這三個系統的核心都是linux核心,編譯jni的方法也一樣。編譯命令如下 gcc i...

如何用openssl命令列生成證書

老大要我在web server裡面加上https功能,可是但就使用openssl生成證書就耗費了我兩天時間,網上有很多相關的資料,但是都寫的很複雜,照著他們的來,還是走了很多彎路。我總結一下,步驟主要有 cd usr local ssl 二 拷貝openssl.cnf,把ssl下的openssl.c...

命令列編譯Solution

c windows devenv.com microsoft r 開發環境 7.10.3077 版。c microsoft corp 1984 2001 保留所有權利。用法 devenv solutionfile projectfile anyfile.ext switches 可以呼叫 deven...