刷C Primer Plus 第一步配置编程环境-使用VSCode 和 Remote

背景信息:

  笔者第一次接触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

原文地址:https://www.cnblogs.com/yiweshen/p/12788123.html