前言:前面的文章介绍了在Windows平台之下使用Ming-win64和MSVC搭建C/C++的开发环境,本文开始介绍在Linux平台之下如何搭建开发环境。可以参考前面两篇文章:
VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建
VSCode开发C、C++环境搭建系列(三)——基于MSVC搭建
gcc
g++
make
cmake
这四个是缺一不可的
本文介绍的是简单的只包含几个源文件的C开发,所以make和cmake暂时用不到。
另外关于编辑器vs code的使用和windows上面几乎每什么区别,这里不再赘述。
2.1 头文件的搜索
gcc 在编译时如何去寻找所需要的头文件:
(1)编译器指定的参数 -I 给出的头文件包含路径
(2)然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH(分别对应C、C++、objective-C的头文件)
(3)GCC标准安装目录,系统标准include路径。安装GCC套件的时候可以通过--prefix参数手动指定安装位置。
默认的安装位置在:
gcc/x86_64-linux-gnu/7/
在这个文件夹之下包含了很多的头文件以及库文件
(4)内定目录,不需要自己额外声明以及添加的目录
/usr/include 及其下面的子目录
/usr/local/include 及其下面的子目录(centos7中该目录下是空的)
2.2 静态库文件
(1)gcc在编译的时候通过 -L参数 手动指定的搜索路径
(2)再找gcc的环境变量LIBRARY_PATH
(3)再找内定目录,这是这些安装GCC套件的时候所安装的那些目录
/lib和/lib64
/usr/lib 和/usr/lib64
/usr/local/lib和/usr/local/lib64
2.3 运行时动态库的搜索路径
动态库的搜索路径搜索的先后顺序是:
(1)编译目标代码时使用 -L参数 指定的动态库搜索路径;
(2)环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
(3)配置文件/etc/ld.so.conf中指定的动态库搜索路径;
(4)再找内定目录,这是这些安装GCC套件的时候所安装的那些目录/lib和/lib64
/usr/lib 和/usr/lib64
/usr/local/lib和/usr/local/lib64
3.1 配置c_cpp_properties.json 文件
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**" //头文件以及库文件的搜索路径也可以添加进去
],
"defines": [],
"compilerPath": "/usr/bin/gcc", //编译器路径
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
3.2 配置生成任务的tasks.json文件
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args":[
"-g","test.cpp","-o","test.out" //其实就是编译,这里指定编译的参数
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
3.3 配置调试的launch.json文件
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/test.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
3.4 实验代码
#include
int main(int argc, char const *argv[])
{
for(int i=0;i<5;i++)
{
std::cout<
说明:上面仅仅是演示了简单的C文件的编译以及运行,如果对于一个比较大的工程文件,make和cmake工具是必不可少的,所以后面会针对这两个最难的点进行说明,vs code也可以和这些工具配合起来,做成一个比较强大的集成开发环境。