背景信息:
筆者第一次接觸C語言是在大一學校開設的C語言程序設計課上,使用教材是國內高校老師編著的。
Windows 系統,IDE 是 Microsoft Visual C++ 6.0,簡稱 VC6.0,是微軟於1998年推出的一款 C++ 編譯器。
當時,沒學習過計算機科學導論,計算機組成原理,也不知道 Linux 為何物。就這樣期末考了 80+
現在回爐重造!
Windows 系統下使用 WSL 和 VSCode 調試 C/C++ 代碼,這是折中方案。
WSL(Windows Subsystem for Linux)是一個在Windows 10上能夠運行原生Linux二進制可執行文件(ELF格式)的兼容層。
它是由Microsoft與Canonical公司合作開發,其目標是使純正的Ubuntu 14.04 "Trusty Tahr"映像能下載和解壓到用戶的本地計算機,並且映像內的工具和實用工具能在此子系統上原生運行。
必備知識:
Linux下gcc 編譯C語言
1.創建一個.C文件
vi/vim hello.c
2.編譯 hello.c文件,生成可執行文件
gcc hello.c
3.執行文件,在默認情況下產生的可執行程序名為 a.out
./a.out
4.通常可以通過 gcc 的“-o”選項來指定自己的可執行程序名稱。
gcc -o hi hello.c
生成可執行程序名為 hi
./hi
5.使用gcc的“-c”標記來編譯支持庫代碼(對多個文件進行編譯)
gcc -c hello.c
輸出結果為一個名為 hello.o 的文件
Windows 10下安裝WSL官方教程:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
編輯器有兩種方案:
- Vim 或 Emacs
- Visual Studio Code 官方教程:https://code.visualstudio.com/
接下來在 VSCode 安裝必備插件:
- Remote - WSL
- C/C++
注意:點擊 VSCode 左下角的 WSL:Ubuntu,選擇 Remote-WSL:Reopen Folder in WSL

使用 VSCode 編輯代碼 與遠程連接WSL:Ubuntu,在 Linux 下 gcc 編譯 和 gdb 調試
坑1:VSCode 是用來編輯代碼,一定要保持在遠程連接狀態。
理清思路,不要在本地新建文件夾保存代碼,要完全按照 Linux 操作習慣
$ mkdir chapter_03
確保 gcc 和 gdb 安裝成功
~$ whereis gcc gcc: /usr/bin/gcc
~$ whereis gdb gdb: /usr/bin/gdb
筆者第一次配置方案,不推薦,會有很多意想不到的報錯,焦頭爛額,根本沒法專心寫代碼
下面是第一次使用 VSCode 中 C/C++ 編譯插件需要配置的文件,launch.json
坑2,使用 VSCode 編輯,在終端 gcc 編譯,報錯
$ cd chapter_03 $ ls frist.c
$ gcc frist.c /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': (.text+0x24): undefined reference to `main' collect2: error: ld returned 1 exit status
源文件如下:
#include<stdio.h> int main(void){ printf("test gcc..."); return 0; }
解決方案:
$ gcc -Wall -g -c frist.c $ gcc -Wall -g frist.o -o frist $ ./frist test gcc...
進一步學習 gcc 參數
gcc 是 GNU 的 c 編譯器,gcc 在執行編譯工作的時候,總共需要4步:
- 預處理,生成 .i 的文件 [預處理器cpp]
- 將預處理后的文件轉換成匯編語言, 生成文件 .s [編譯器egcs]
- 有匯編變為目標代碼(機器代碼) 生成 .o 的文件 [匯編器as]
- 連接目標代碼, 生成可執行程序 [鏈接器ld]
-g // 只是編譯器,在編譯的時候,產生調試信息。
-c // 只激活預處理,編譯,和匯編,也就是只把程序做成obj文件
接“第一次使用 VSCode 中 C/C++ 編譯插件需要配置的文件”,更新配置文件,
達到 VSCode 編輯,Ctrl + Shift + B 編譯,Ctrl + F5 調試 的效果
首先,打開WSL,Ubuntu
出現的首行歡迎語:Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.4.0-18362-Microsoft x86_64)

然后,輸入如下示例命令:
~$ cd c_primer_plus/ ~/c_primer_plus$ ls chapter_02 chapter_03 chapter_04 chapter_05 ~/c_primer_plus$ mkdir chapter_06 ~/c_primer_plus$ cd chapter_06 ~/c_primer_plus/chapter_06$ mkdir Demo ~/c_primer_plus/chapter_06$ mkdir Practise ~/c_primer_plus/chapter_06$ ls Demo Practise
首次用 VSCode 編輯,示例

然后,先點擊最下面 Configure Default Build Task

然后,選擇第一個

就有如下代碼,無需改動

然后,Ctrl + Shift + B

解放雙手吧,接下來就是 Ctrl + F5 調試,自然是不行滴,先簡單配置一下

重點來了,選擇最下面的配置

留意此處的修改,WorkSpaceFolder 后新增 Demo,
再根據編譯后生成的文件后綴不同,添加 a.out,或 fileBasenameNoExtension

再 Ctrl + F5,調試,大功告成!
受此啟發:https://blog.csdn.net/Hyz8970/article/details/101627753
