第一個問題就是:我要在哪裡寫+執行程式?
如果想要單純執行其實可以安裝[Code:Blocks](Code::Blocks - Code::Blocks)等類似的軟體就可以實踐入手快,幾乎不用編譯可以快速跑起來,這樣可以讓學習的人專注於程式碼本身,對於單純執行C是一個很好起步的工具。
但是如果像我一樣主要的工作範疇是嵌入式系統,大多都會使用Linux,但一個新手要完全從熟悉的windows系統切換到Linux是有極高的難度的,因此決定善用微軟提供的 WSL(Windows Subsystem for Linux)。雖然有人認為它不算是完整的 Linux 環境,而且會佔用一些電腦資源,但對初學者來說,它的好處是不用額外裝虛擬機或雙系統,就能在 Windows 裡直接享受到 Linux 的開發體驗。這樣既能練習 C 語言,也能同時熟悉 Linux 指令,實屬一舉兩得。
而編輯器的選擇,我選擇了 Visual Studio Code。它不僅免費,還能透過延伸套件連線到 WSL,等於是在 Windows 界面中打開 Linux 檔案,編輯、編譯、除錯都能在一個環境中完成。比起在純 Linux 終端機裡用 vim
或 nano
,VSCode 提供語法上色、自動完成、偵錯工具,對初心者而言非常友善。
不過如果不使用WSL + VSCode的組合的話,下面的組合也可以多加參考
組合 | 優點 | 缺點 | 適合對象 |
---|---|---|---|
VSCode + WSL | - 在 Windows 上跑完整 Linux 環境- gcc/make/gdb 等工具原生支援- VSCode 提供 UI、除錯、插件 | - 初始安裝需設定 WSL- 佔用一點資源- 和純 Linux 還是有些差異 | 想在 Windows 上體驗 Linux 編譯流程的人 |
VSCode + MinGW (Windows GCC) | - 安裝簡單- 可以直接在 Windows 編譯執行- 不需 WSL | - 與 Linux 工具鏈差異大(header/library 相容性問題)- 部分跨平台專案難以直接編 | 只想在 Windows 簡單寫小專案的初學者 |
Visual Studio (完整 IDE) | - 強大 IDE,整合除錯、編譯器- Windows 專案支援完整 | - 體積龐大- 偏 Windows 生態,與 Linux 差異大- 不適合嵌入式或跨平台 | 偏向 Windows 桌面應用或公司內建 MS 生態的人 |
Code::Blocks (IDE + GCC) | - 輕量,安裝即用- 適合小專案- 新手友善 | - 介面老舊- 插件少- 不利長期維護大型專案 | 想快速入門 C 的新手 |
CLion (JetBrains IDE) | - 現代化 IDE- 原生支援 CMake- 提供 refactor、代碼導航 | - 收費軟體(學生可免費)- 資源消耗比 VSCode 大 | 想用功能齊全 IDE 並習慣 JetBrains 系列的人 |
純 Linux (VSCode Remote / vim / nano) | - 最貼近真實生產環境- 工具鏈完整,與伺服器/嵌入式一致 | - 對 Windows 使用者不友善- 硬體驅動相容需考量 | 想直接體驗 Linux 開發的進階學習者 |
Xcode (macOS) | - macOS 原生 IDE- UI/UX 優化好- 可直接用 clang 編譯 | - 僅限 macOS- 與 Linux 編譯環境還是有差 | Mac 使用者想學 C 的最佳選擇 |
可以參考官方文件
適用於Linux的 Windows 子系統檔 | Microsoft Learn
以下提供簡單說明:(windows --> 可以使用powershell來快速下指令)
wsl --list --online
這個命令會顯示可安裝的 Linux 發行版清單,例如 Ubuntu、Debian、Kali 等。
NAME FRIENDLY NAME
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
AlmaLinux-10 AlmaLinux OS 10
Debian Debian GNU/Linux
FedoraLinux-42 Fedora Linux 42
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
archlinux Arch Linux
kali-linux Kali Linux Rolling
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-15.6 openSUSE Leap 15.6
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_10 Oracle Linux 8.10
OracleLinux_9_5 Oracle Linux 9.5
Ubuntu 發行版預設 22.04 LTE
wsl --install -d Ubuntu
一般使用上來說建議22.04 LTE 以上的版本搭載的python 版本以及cmake版本都會比較新
wsl --install -d Ubuntu-20.04
如果不是透過上面的方法初始化一個WSL,而是使用vhdx進行安裝的話可以參考下面的流程
wsl --import-in-place (ubuntu_backup命名) vhdx檔路徑(D:\wsl\ext4.vhdx)
例如
wsl --import-in-place ubuntu_backup D:\wsl\ext4.vhdx
wsl --shutdown
wsl --update
wsl --list --verbose
wsl --set-version Ubuntu-20.04 2
wsl -l -v
假如我有兩個環境的話,會列出兩個環境有* 標示的是預設路徑 * 標註的是預設路徑
NAME STATE VERSION
* Ubuntu-22.04 Stopped 2
ubuntu_backup Running 2
wsl --set-default ubuntu_backup
就會出現
操作順利完成。
如果只有一個wsl可以下下面的指令,他就會打開預設的wsl檔案
wsl
或是可以指定打開特定的wsl
wsl -d ubuntu_backup
wsl --unregister Ubuntu-22.04
wsl --unregister ubuntu_backup
安裝windows vscode
Visual Studio Code - Code Editing. Redefined
wsl # 呼叫wsl
code .
這樣就可以順利使用vscode了
cmake tool
C/C++
C/C++ extension pack