創作內容

1 GP

【寫程式教學】在 Windows 上透過 CLI 介面編譯 C/C++

作者:♙♲⚙\~O_O~/⚙♲♙│2018-04-19 05:15:07│巴幣:2│人氣:1415
這篇是給在 Windows 上,不想用 IDE 的人,
並附帶不用 Visual Studio 怎麼編譯某些東西的示範。
每個人可能習慣不一樣,請自己微調。
然後,
這篇的教學對象是我自己,避免自己忘了
這篇的教學對象是我自己,避免自己忘了
這篇的教學對象是我自己,避免自己忘了
很重要,這意味著你會無法接受我的習慣。

之後我若有機會開始使用 gdb 熟悉後再補 CLI 介面的 debugger

情境:
你只想要寫個小作業,不用偵測記憶體,不用舒服 debug ,反正邏輯超好寫下去就對了,只是要測試執行結果以便交差,無奈 IDE 可能
1. 不會用,各種看不懂:新增檔案在?專案是啥?編譯按鈕在哪裡?
2. 速度慢,一天到晚卡住,一副逼著要換新電腦的樣子。或是換了新電腦還是會卡住

目錄:
0. 取得編譯器
1. 安裝
2. 驗證
3. 有些東西編不起來耶,是甚麼問題?

0. 取得編譯器
// 有編譯器程式就跳過到 1. 安裝
那你可以只把編譯器開出來用,不過這邊不是開 Visual Studio 的編譯器,雖然我覺得一樣。 (我電腦又沒有VS,我哪知道他的compiler在哪
我要用的是 mingw ,或是可編出 64 位元程式的 mingw64 ,然後很無奈的,防毒大廠的資料庫搜集的資料大多都是他編出來的,很容易就把你的程式當毒隔離/刪除。
至於編譯器的來源?網路上找到正常的(沒有加料過的)版本載下來用,例如直接以 mingw 和 mingw64 當關鍵字 google ,再加上維基、其他教學多方比對,然後你可能會得到以下結論:
到這裡找下載點 http://www.mingw.org
或是支援64位元的版本 https://mingw-w64.org/doku.php/download
以下個人固執:
純32位元版的應該沒問題,有問題的話直接去code::blocks把裡面附的那包倒出來就好了。
問題應該會在64位元上,下載後會發現怎麼檔案那麼小,不意外的話應該式下載器(猜的),所以又會找呀找,然後找到在 "https://sourceforge.net/projects/mingw-w64/files/mingw-w64/" 往下找,有個 "MinGW-W64 GCC-7.3.0" ,底下都是預編好的打包壓縮檔,終於能不透過 exe 自動幫我裝了

1. 安裝
不管用哪一種,總有一個編譯器程式,以mingw來說,會在 bin/ 資料夾中有個 g++.exe, c++.exe, ... (用起來應該一樣吧(?) 沒驗證過)
在環境變數PATH新增以上程式所在資料夾的完整路徑
例如 g++.exe 的完整路徑是: "D:\mingw64\bin\g++.exe" ,那就把 D:\mingw64\bin 加進PATH,怎麼加看這篇 "https://home.gamer.com.tw/creationDetail.php?sn=3557734" (←超連結)

然後就裝好了

2. 驗證
a. 打開新的cmd.exe(不要從改環境變數之前開的cmd.exe打start,環境變數會繼承)
b. 打g++
c. 看到 "g++: fatal error: no input files ..."
d. 嗯,裝完了,收工

3. 有些東西編不起來耶,是甚麼問題?
98% 是你不會編,1%是你編出來的程式還沒關掉 1%是編譯器卡了
針對"你不會編"做說明:
你的 library、object file 沒放進來
例如我的某個程式:
若是直接編譯它,正常不會過(不正常會過),他會說 'undefined reference ...' 原因是你的 '#include <windows.h>' 其實只有 header ,他還缺少 body。
(你說你不會分 header 和 body? 你就想成把一個人分成 1.他的外表 和 2.他實際上的功能 ,header是1;body是2)
你要在編譯的時候跟他說身體在這裡,讓編譯器叫linker把這些叫來叫去的函式們串起來。
比方說自己去看上面給的cpp的上面註解:
// g++ -o a.cpp.exe --all-warnings -std=c++11 -O2 -s a.cpp "C:\Windows\System32\psapi.dll" -lPsapi
指定還有一部份body在 "C:\Windows\System32\psapi.dll"
使用library Psapi.lib
不同函式會用到不同library、dll,自己去 google 找 M$ 官方怎麼說


CLI編譯懶人包:(2018/04/19)
1. 編譯器用這個
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z
2. 更改環境變數PATH

沒了啊你為什麼要期待還有3.,難道還要我告訴你要下
g++ 你寫的cpp.cpp -o 你想要他編出來的直行檔叫甚麼名字.exe
還要告訴你參數記得下 -O2 / -O3 自動優化(聽說O3有bug不知道修好了沒)不然跑起來有夠慢
還要告訴你下 -s 把檔案大小壓下去
告訴你下 -std=c++11 以c++11的方式parse你的檔案,這樣才有auto可用
下 --all-warnings 把所有警告丟出來,有時候就差在這裡




後記:
*如果你覺得我上面的名詞使用怪怪的請在下方留言提出,因為我自己是能記起來以及能用(該有的功能要有,不該有的功能不要有)就好了,不太在意與他人的溝通
*這樣做的好處?
1. 跳去用 linux/unix 比較不會不適應,反正你記的不是圖案、視覺位置
2. 不用記每個 IDE 裡面出現的一堆名詞,節省腦細胞
3. 我不要被 M$ 綁架
*要學 compiler 怎麼做去聽資工系的課自己學好嗎,那很難講耶,還是有人要挑戰在小屋教的


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3960723
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:c++|c|Windows|CLI|IDE掰掰

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★agold404 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【ㄎㄧㄤ】雖然模型tra... 後一篇:【寫程式教學】c++ c...

追蹤私訊切換新版閱覽

作品資料夾

fc105123美食及旅行愛好者
屋內更新日誌,有興趣的人能來看一看,感恩。看更多我要大聲說5小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】