在linux下使用vscode编写c语言
前言
`初次在linux下使用vs code编写c语言,遇到很多问题,在这里总结一些解决方法分享给大家,希望对后来者有所帮助。笔者水平有限,如有错误,还请斧正!
提示:笔者使用的是centos7.6,虚拟机安装可参考视频《2021韩顺平 一周学会Linux》
centos7.6 阿里云盘链接
提取码: mm87
一、下载vs code
参考链接: vs code安装方法
安装方式二亲测有效!!!
提示:centos7.6装1.51版本并且不要更新vs code!!!否则会出现很多问题!!!
所以说为什么要选择centos7.6 ,真的累。
1.51版本链接
重启,点击应用程序-编程-vs code:
初始界面如下:
二、c语言插件
1.汉化 (Chinese Simplified)
- 点击extensions(打开扩展)
快捷键:ctrl+shift+x - 输入chinese,点击中文简体,点击install
- 重启 vs code
2.c语言插件(c/c++)
与汉化步骤相同,在应用扩展商店输入c,点击安装即可,上图:
3.编译运行插件(Code runnner)
上图:
全部安装完毕,重启vscode,避免出现其他问题。如有其他插件推荐,欢迎留言评论。
三.配置c语言环境
在vs code 中,依次点击 文件——打开文件夹——找到刚才新建的文件夹,笔者把新建的文件夹命名为helloworld。
右击——新建文件夹,命名为.vscode
前面的这个 . 不要丢掉!
在.vscode文件夹下新建两个文件,分别为
- launch.json
- task.json
将下面的代码复制保存到对应的json文件里。
- launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
- tasks.json
{
"version": "2.0.0",
"tasks": [{
"label": "compile",
"command": "gcc",
"args": [
"-g",
"${file}",
"-lm",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
到此,c语言环境配置完成。
四.完成一个简单的程序
代码如下:
#include<stdio.h>
int main(void){
printf("hello,world!\n");
return 0;
}
点击右上角朝右指向的小三角形即可。
运行结果:
如果想在终端上运行该程序:
五.调用math.h函数遇到的问题
问题描述
调用sqrt函数,却出现了问题
代码如下:
#include<stdio.h>
#include<math.h>
int main(void){
double x=25;
double y;
y=sqrt(x);
printf("y is %f\n",y);
return 0;
}
错误原因如下:
原因分析
原因:缺少某个库,用 -l 参数将库加入。Linux的库命名是一致的, 一般为 libxxx.so, 或 libxxx.a, libxxx.la, 要链接某个库就用 -lxxx,去掉头 lib 及 “.” 后面的 so, la, a 等即可。
常见的库链接方法为:数学库 -lm; posix 线程 -lpthread
gcc编译时对’xxxx’未定义的引用问题
在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 文件没有问题,但是编译(这一步应该是链接)为可执行文件的时候会出现找不到’xxx’的定义的情况。
解决方案
- 终端解决方案
gcc -lm helloworld.c
- vs code 解决方案
- 点击设置
快捷键 ctrl+,
- 输入coderunner
- 找到settings.json并点击
- 在箭头处加上
-lm
运行结果: