背景信息:
笔者第一次接触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 调试
至于为什么,不在 VSCode 上一站式解决编辑、编译、调试?
每次编译都会生成同名文件文件,索性使用 gcc 命令行默认生成 a.out
坑1:VSCode 是用来编辑代码,一定要保持在远程连接状态。
理清思路,不要在本地新建文件夹保存代码,要完全按照 Linux 操作习惯
yws@yws-pc:~/c_primer_plus$ mkdir chapter_03
确保 gcc 和 gdb 安装成功
yws@yws-pc:~$ whereis gcc gcc: /usr/bin/gcc yws@yws-pc:~$ whereis gdb gdb: /usr/bin/gdb
下面是第一次使用 VSCode 中 C/C++ 编译插件需要配置的文件,launch.json
"version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/chapter_03/a.out", // 此处是坑2,因为忘记加 chapter_03 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] }, { "name": "gcc - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "gcc build active file", "miDebuggerPath": "/usr/bin/gdb" } ]
受此启发:https://blog.csdn.net/Hyz8970/article/details/101627753