Linux与C语言紧密相关,在Linux下写C代码更是一种享受。工欲善其事,必先利其器,舒适的开发环境非常重要。Linux下有编译器gcc和调试器gdb,还有编辑器vim。但vim的使用颇有难度,我们选择更加用户友好的VS Code进行编程,并使用扩展搭建一个完整的编程环境。
Debian及其分支系统,如果要安装vscode,非常容易,仅仅需要几行代码。
- sudo apt update
- sudo apt install software-properties-common apt-transport-https curl
- curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
- sudo apt update
- sudo apt install code
下面是配置c语言环境
- sudo apt-get update
- sudo apt-get install gcc
- sudo apt-get install g++
- sudo apt-get install gdb
- sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
- sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=ht tps://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
- dnf check-update
- sudo dnf install code
下面是配置c语言环境
- su root
- yum install cpp
- yum install binutils
- yum install glibc
- yum install glibc-kernheaders
- yum install glibc-common
- yum install glibc-devel
- yum install gcc
- yum install make
- yum install kernel
- yum install kernel-level
Arch Linux需要先开启AUR仓库来进行安装。首先要编辑 /etc/pacman.conf 里面的内容,在最下面添加如下代码
- [archlinuxcn]
- SigLevel = Never
- Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
然后进行系统更新和安装操作
- sudo pacman -Syyu
- sudo pacman -S yay
- yay -S visual-studio-code-bin
下面是配置c语言环境
sudo pacman -S gcc glibc
既然要配置vscode,我们必须要下载相应的插件才可以编写代码
- 1.C++ Intellisense #语法静态检测
- 2.C/C++ #函数与头文件的跳转需要这个插件的支持
- 3.Code Runner #可以直接运行单个cpp文件
- 4.C/C++ GNU Global #使用GNU Global为C/C++提供智能感知
- 5.Chinese (Simplified) Language Pack for Visual Studio Code #汉化包
安装完成这些插件之后,你需要重启你的电脑。
vscode需要自己配置,下面就说一下配置文件怎么写。首先vscode在c语言环境需要配置3个文件。
- tasks.json:构建可执行文件,即编译
- launch.json:启动调试程序
- settings.json:针对当前工作空间的VS Code设置
那么这些文件怎么使用?下面就来交给大家。
首先你需要创建一个文件夹 ,然后用vscode打开它。你需要新建3个json文件,他们分别是
- 1.tasks.json
- 2.launch.json
- 3.settings.json
首先是tasks.json里面的内容
- {
- "version": "2.0.0",
- "tasks": [
- {
- "type": "shell",
- "label": "C/C++: gcc build active file",
- "command": "/usr/bin/gcc",
- "args": [
- "-g",
- "${file}",
- "-o",
- "${fileDirname}/${fileBasenameNoExtension}"
- ],
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": [
- "$gcc"
- ],
- "group": {
- "kind": "build",
- "isDefault": true
- }
- }
- ]
- }
-
version:配置文件格式的版本号,多年不变,无需关心
type:可选’process’或’shell’,决定构建任务作为单独进程还是一条shell命令启动。如果为’shell’,则可以可以使用Linux的shell扩展
label:构建任务的名字,也是任务标识
command:构建任务使用的命令,即调用编译器的命令,如’gcc’
args:传递给command的参数,即gcc的选项
-g:包含调试信息,用于gdb调试
{file}:需要编译的文件,此处表示当前文件 -o:指定可执行文件的路径和名字,即后面的'file:需要编译的文件,此处表示当前文件−o:指定可执行文件的路径和名字,即后面的′{fileDirname}/${fileBasenameNoExtension}'参数
cwd:构建命令执行时的工作目录,和相对位置的查找与文件生成有关
problemMatcher:使用正则表达式检查源文件的错误,配置语法比较复杂,一般也用不到。如不需要可以删掉这条配置
isDefault:是否作为默认构建配置
默认生成的配置文件已经可以进行编译了,我们只需要根据个人喜好修改某些参数的值,达到想要的效果。
下面是launch.json里面的内容
- {
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "gcc - Build and debug active file",
- "type": "cppdbg",
- "request": "launch",
- "program": "${fileDirname}/${fileBasenameNoExtension}",
- "args": [],
- "stopAtEntry": false,
- "cwd": "${workspaceFolder}",
- "environment": [],
- "externalConsole": false,
- "MIMode": "gdb",
- "setupCommands": [
- {
- "description": "Enable pretty-printing for gdb",
- "text": "-enable-pretty-printing",
- "ignoreFailures": true
- }
- ],
- "preLaunchTask": "C/C++: gcc build active file",
- "miDebuggerPath": "/usr/bin/gdb"
- }
- ]
- }
-
version:配置文件格式的版本号,无需关心
name:调试任务的名称,如果有多个调试任务,可以用于标识
type:调试类型,只能填’cppdbg’
request:可选’launch’或’attach’,决定调试的程序作为独立进程还是附加到其他进程启动
program:目标程序,与’tasks.json’中输出的程序对应
args:传递给目标程序的参数
stopAtEntry:是否在入口处停止,相当于在’main’函数第一行加了个断点,一般选’false’
cwd:目标程序的工作目录,与相对位置文件的读写有关
environment:传递给目标程序的环境变量
externalConsole:是否使用外部控制台,如果为’true’,则弹出一个新窗口运行目标程序,并在程序结束后立刻关闭
MIMode:调试器,可选’gdb’或’lldb’,本例中选择’gdb’
setupCommands:gdb的设置命令,无需改动,无需关心
preLaunchTask:在调试前预先进行的任务,通过名字标识,这里填在’tasks.json’中配置好的构建任务
miDebuggerPath:调试器的路径,如果没有设置,则在环境变量里寻找MIMode设置的程序
最后是settings.json里面的内容(注意,这个配置文件请根据个人喜好进行调整!!!)
- {
- "files.associations": {
- "tidl_alg_int.h": "c",
- "limits": "c"
- }
- }
这个配置文件可以根据自身去进行调整,并不是一定要这样配置!
本文仅介绍C编程环境的配置,对于C++请自行探索。
gcc默认链接标准C库’libc’,但不链接其他库,如果要使用数学库’libm’,除了需要在源文件里#include
如果了解一些gcc参数,可以在’task’的shell里得到很多有用的信息。