centos7搭建vs code的c/c++开发环境

1、先安装vs code(两个方法)

1.1 方法1(稍慢些,要方便可以直接看1.2)

先更新yum源(不是必须的,但是更新了会稍微快些,100+kb/s的样子)

下面的系列命令,如果权限不够,用root用户执行,转到root用户明令:su root

下载国内yum源文件(centos7,前者阿里,后者华为,二选一即可):

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo

清理缓存 

yum clean all

这里可能报错:“fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2686 的另一个程序正在运行。” 那么执行下面的语句:

rm -f /var/run/yum.pid

重新生成缓存:

yum makecache

 更新yum源:

yum -y update

到此处ok。下面开始安装下载vscode: 

参考官方的详细安装说明:

https://code.visualstudio.com/docs/setup/linux 

centos7搭建vs code的c/c++开发环境_第1张图片

注意与自己的操作系统匹配。 

得到如下步骤:

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=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

如果出现如下问题:xxx不在 sudoers 文件中。此事将被报告。的错误,使用su root命令,进入root用户,再使用vi命令编辑/etc/sudoers文件,找到root    ALL=(ALL)         ALL,在其下一行添加:

xxx           ALL=(ALL)         ALL。其中xxx是你的用户名。保存并退出。然后继续下面的操作。没有报错也继续下面的操作。

yum check-update
sudo yum install code

如果上面两句命令出现如下错误:“fastestmirror, langpacks /var/run/yum.pid 已被锁定,PID 为 2686 的另一个程序正在运行。” 那么执行下面的语句,再执行上面的语句即可:

rm -f /var/run/yum.pid

结束后,就完成了安装。

命令行中键入:

/usr/share/code/bin/code

就打开了vs code,如下图:(用普通用户,用root用户可能不成功)

centos7搭建vs code的c/c++开发环境_第2张图片

然后把这两个安装上:(搜索框中搜索)

centos7搭建vs code的c/c++开发环境_第3张图片

1.2 方法2(较快)

打开centOS的浏览器,找到vscode官网,下载.rmp后缀的文件

centos7搭建vs code的c/c++开发环境_第4张图片

点击它,然后开始下载:

centos7搭建vs code的c/c++开发环境_第5张图片

但是还是慢,甚至下载失败。鼠标选中,右键点击复制下载链接:

centos7搭建vs code的c/c++开发环境_第6张图片

粘贴到新的栏目,如下:

将http://az764295.vo.msecnd.net 替换为 http://vscode.cdn.azure.cn

然后回车,1分钟之内即下载完毕。在文件夹中显示,

centos7搭建vs code的c/c++开发环境_第7张图片

然后在空白位置,右键,在终端中打开。

centos7搭建vs code的c/c++开发环境_第8张图片

然后分别输入几个命令,如下红色框:

centos7搭建vs code的c/c++开发环境_第9张图片

到此处,完成安装。 命令行中键入:

/usr/share/code/bin/code

就打开了vs code,如下图:(用普通用户,用root用户可能不成功)

centos7搭建vs code的c/c++开发环境_第10张图片

然后把这两个安装上:(搜索框中搜索)

centos7搭建vs code的c/c++开发环境_第11张图片

 2、配置环境

安装gcc、g++,分别键入如下命令:

su
yum install gcc
gcc -v
yum install gcc-c++
g++ -v

3、编写程序并测试

编写一个cpp文件,使用vi hello.cpp命令,并写一个简单的程序:

#include 
using namespace std;

int main() {
    cout << "Hello, world!!!!" << endl;
    return 0;
}

(1)、编译hello.cpp:

g++ -c hello.cpp

输出结果是一个hello.o文件,这是编译过程的生成的中间文件。-c 表示只编译,不链接。

(2)、链接hello.o:

g++ -o hello.out hello.o

输出结果是一个hello.out文件,这是最终的可执行文件。-o 表示输出文件,hello.o是上一步生成的.o文件。当然,如果第2、3步是可以合并执行,直接执行命令:

g++ -o hello.out hello.cpp

(3)、运行hello.out:

./hello.out

4、构建项目

实际开发过程中不可能只有一个cpp程序,有时候有较多的.h和.cpp文件,那直接通过g++编译可执行文件就没那么简单了。此刻需要借助Make这个强大的项目构建工具,帮助构建和组织项目代码。假设现在有如下3个文件:main.cpp、SayHello.h和SayHello.cpp

/* SayHello.h */
#include 
using namespace std;
class SayHello {
public:
    void Say();
};

/* SayHello.cpp */
#include 
#include "SayHello.h"
using namespace std;

void SayHello::Say(){
    cout << "Hello World!" << endl;
}

/* main.cpp */
#include 
#include "SayHello.cpp"
using namespace std;

int main () {
    SayHello hello;
    hello.Say();
    return 0;
}

可以看到这个简单例子包括头文件引用、定义和实现分离等情况,如果直接g++ -o main.out main.cpp将会报未定义引用的错误。这时可以使用makefile工具。

(下面,到第四节之间,可以不用看,这里只是简单介绍下makefile)

在项目的根目录下创建一个makefile文件,告诉Make如何编译和链接程序。如下:

main.out : main.o SayHello.o
    g++ -o main.out main.o SayHello.o     # 注意前面必须是回车
main.o : main.cpp SayHello.h
    g++ -g -c main.cpp
SayHello.o : SayHello.h SayHello.cpp
    g++ -g -c SayHello.cpp
clean:                                 # 清除
    rm main.o SayHello.o main.out

其基本的语法规则:(此处作为一个引子,介绍makefile的简单使用,更多复杂的用法可以去官网学习)

target ... : prerequisites ...
  command # 注意前面是回车符

target是一个目标文件,可以是Object File,也可以是执行文件,还可以是一个标签;

prerequisites是要生成那个target所需要的文件或是目标;

command是make需要执行的命令(任意的Shell命令)。

简而言之就是target目标,依赖于prerequisites列表中的文件,执行规则定义在command里。如果prerequisites列表中文件比target要新,就会执行command,否则就跳过。这就是整个make过程的基本原理。

现在看上面定义的makefile文件,解释一下每两行的作用

main.out : main.o SayHello.o
    g++ -o build main.o SayHello.o

target是build,依赖于main.o 和 SayHello.o,执行的命令是 g++ -o build main.o SayHello.o
意思是通过g++链接main.o和SayHello.o,生成可执行文件build,prerequisites有两个.o文件,是因为代码里main引用了SayHello.h。

main.o : main.cpp SayHello.h
    g++ -g -c main.cpp

target是main.o,依赖于main.cpp和SayHello.h,执行命令是g++ -g -c main.cpp。意思是通过g++编译main.cpp文件,生成main.o文件,g++命令中 -g 表示生成的文件是可调试的。

SayHello.o : SayHello.h SayHello.cpp
    g++ -g -c SayHello.cpp

同上,编译SayHello.cpp文件,生成SayHello.o文件。

最后是一些清理工作:

clean:
    rm main.o SayHello.o main.out

这里clean不是一个可执行文件,也不是一个.o文件,它只不过是一个动作名字,类似于label的作用。

简述下make的工作原理。按照上面的例子:

(1)make在当前目录下找名为makefile或Makefile的文件;

(2)如果找到,它会找文件中的第一个target,如上述文件中的main.out,并作为终极目标文件;

(3)如果第一个target的文件不存在,或其依赖的.o 文件修改时间要比target这个文件新,则会执行紧接着的command来生成这个target文件;

(4) 如果第一个target所依赖的.o文件不存在,则会在makefile文件中找target为.o的依赖,如果找到则执行command,.o的依赖必是.h或.cpp,于是make可以生成 .o 文件了;

(5)回溯到b步执行最终目标。

那么最终执行情况如下:

centos7搭建vs code的c/c++开发环境_第12张图片

注意,如果要执行clean,需要手动在命令行输入make clean 

5、使用vs code

第2节介绍了如何打开vs code,每次都键入那么长的命令行比较麻烦,这里写一个脚本,如下:

#!/bin/bash

/usr/share/code/bin/code

同时赋予其权限:

centos7搭建vs code的c/c++开发环境_第13张图片

以后直接执行就打开vs code啦:

./open_vscode

 下面,新建一个project文件夹,把前面的三个文件代码放到project中的code文件夹中,再建一个.vscode文件夹,里面建一个tasks.json(作用是告诉 VS Code 如何构建(编译)程序,将调用 g++编译器从源代码创建一个可执行文件。),如下:

centos7搭建vs code的c/c++开发环境_第14张图片

将如下内容复制到tasks.json中:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: /usr/bin/g++"
        }
    ]
}

然后运行,得到结果,算是配好环境了。

centos7搭建vs code的c/c++开发环境_第15张图片

如果出现如下提示:

centos7搭建vs code的c/c++开发环境_第16张图片

我们选择配置任务,然后如下: 

 centos7搭建vs code的c/c++开发环境_第17张图片

可以选择我们刚才安装的g++编译器。最后运行成功。 

centos7搭建vs code的c/c++开发环境_第18张图片

你可能感兴趣的:(c++,开发语言)