刷C Primer Plus 第一步配置編程環境-使用VSCode 和 Remote - WSL 插件


背景信息:

  筆者第一次接觸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

編輯器有兩種方案:

  1. Vim 或 Emacs
  2. Visual Studio Code 官方教程:https://code.visualstudio.com/

接下來在 VSCode 安裝必備插件:

  1. Remote - WSL
  2. 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

"version""0.2.0",
    "configurations": [
        {
            "name""(gdb) 啟動",
            "type""cppdbg",
            "request""launch",
            "program""${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry"false,
            "cwd""${workspaceFolder}",
            "environment": [],
            "externalConsole"false,
            "MIMode""gdb",
            "setupCommands": [
                {
                    "description""為 gdb 啟用整齊打印",
                    "text""-enable-pretty-printing",
                    "ignoreFailures"true
                }
            ]
        }
    ]

 坑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步:

  1. 預處理,生成 .i 的文件                                           [預處理器cpp]
  2. 將預處理后的文件轉換成匯編語言, 生成文件 .s  [編譯器egcs]
  3. 有匯編變為目標代碼(機器代碼) 生成 .o 的文件   [匯編器as]
  4. 連接目標代碼, 生成可執行程序                           [鏈接器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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM