2014年7月3日 星期四

MinGW使用簡介(C/C++)

一、安裝
1.      進入官網:http://www.mingw.org/

2.      左下方有個名為Navigation的方框,點選其中的Downloads

3.      進去後會在網頁上看到有一句話:
Looking for the latest version? Download mingw-get-setup.exe (86.5 kB)
點選該連結就會下載了。

4.      安裝過程很簡單,一直按Next就好。安裝後會在桌面上出現捷徑MinGW Installation Manager,若沒有看到,可到C:\MinGW\libexec\mingw-get找到guimain這份檔案,開啟後就可看到編譯器安裝介面

5.      左邊選擇Basic Setup,選擇mingw32-basemingw32-gcc-g++,再選左上方Installation安裝

6.      設定環境變數,不懂環境變數的人可以自行上網查。
新增變數名稱為path,變數值為C:\MinGW\bin
若不設環境變數,可在每次開啟"命令提示字元"時,先輸入
set path=c:\MinGW\bin;%path%
這裡請記得兩件事:
(1)   如果已經有path這個變數名稱,且也已經有值了,那就請用編輯的方式,在值的最前面加上分號(;),並在最前面加入上述的路徑。(若加在後面,編譯可能會無法運作。)

(2)   變數值會隨著安裝路徑改變,所以請先確認該路徑有MinGW\bin的資料夾存在。

二、編譯與執行
1.      將寫好的程式碼存在已知的路徑,例如C:\project1(之後都將以此路徑為例)
C語言的程式碼副檔名為".c"C++".cpp",以下例子將以test.ctest.cpp為檔名。

2.      開啟DOS視窗,也就是"命令提示字元"。移動到程式碼所在的路徑,不懂的可按照以下指令輸入。
cd\
c:
cd C:\project1

3.      接著就可用指令來編譯以及產生執行檔了。

如果你寫的是C語言,那麼你的指令是以gcc為開頭;如果是C++,則改以g++為開頭。
4.      首先是編譯,指令是
gcc -c test.c
若你的程式碼有語法錯誤,你就會在該指令執行後看到錯誤訊息;如果沒錯,那麼資料夾內就會產生編譯後的目的檔,副檔名為.o

5.      接下來就是產生執行檔了,產生的指令是
gcc -o test.exe test.o
假如你有多個編譯後的目的檔要連結,你也可以在後面繼續接上檔名
gcc -o test.exe test1.o test2.o

6.      目前的MinGW版本已經可以不使用編譯指令就直接產生執行檔了,所以若你不想要花時間一個一個編譯,也可以直接用.c檔產生執行檔
gcc -o test.exe test1.c test2.c
但缺點就是若有錯誤訊息,會較難尋找,因此如果檔案較多,建議還是先分別編譯較佳。

7.      如果你對於debug有所了解,應該會知道編譯有debugrelease兩種模式。其中,debug模式的編譯連結指令是
gcc -g -o test.exe test.o
release模式的指令為
gcc -s -o test.exe test.o
差別只在-g-s而已。

8.      最後要講的是編譯最佳化指令,方法是在.c檔前加上-O1-O2、或是-O3,數字是最佳化的等級,可視情況決定用哪種等級編譯
gcc -s -o test.exe –O3 test.o

三、除錯
1.      首先要用debug模式產生出執行檔。

2.      在命令列輸入
gdb
就會進入除錯的模式。

3.      接下來要將執行檔載入
file test.exe
如果看到下面的回應就表示載入成功了
Reading symbols from C:\project1/test.exe...done.

4.      如果要看程式內容,使用list指令
list 2
可以看到第2行之後10行的內容
list 2,5
可以看第2行到第5行的內容
如果要看某函式的內容,如main,則指令為
list main
會列出main函式的10行內容,此後每按一次Enter可繼續印10行。

5.      進行除錯前要設定中斷點,指令是break,如果要中斷在第10行,可輸入
break 10
或者想要中斷在main的一開始,可以這麼做
break main
若要取消中斷點,使用clear即可,格式與break相同

6.      開始執行程式,下指令
run
程式會開始執行,直到遇到中斷點。

7.      可以用下面這些指令來控制程式的運作
next : 執行下一行
step : 進入函式,當遇到該行有函式呼叫時使用
continue : 跳到下一個中斷點

8.      假設程式中有變數x,可用print指令觀看目前的變數值
print x

9.      輸入help指令可看到詳細的功能說明,可以只輸入help,或是在後面接上別的指令,觀看該指令的說明,例如
help print
會列出print的使用說明。


10.  若要結束除錯模式,可用quit退出。

沒有留言:

張貼留言