• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
小太阳的向日葵
帮助1

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 

学新通

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

得到如下步骤:

  1.  
    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  2.  
    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是你的用户名。保存并退出。然后继续下面的操作。没有报错也继续下面的操作。

  1.  
    yum check-update
  2.  
    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用户可能不成功)

学新通

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

学新通

1.2 方法2(较快)

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

学新通

点击它,然后开始下载:

学新通

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

学新通

粘贴到新的栏目,如下:

学新通

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

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

学新通

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

学新通

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

学新通

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

/usr/share/code/bin/code

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

学新通

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

学新通

 2、配置环境

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

  1.  
    su
  2.  
    yum install gcc
  3.  
    gcc -v
  4.  
    yum install gcc-c
  5.  
    g -v

3、编写程序并测试

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

  1.  
    #include <iostream>
  2.  
    using namespace std;
  3.  
     
  4.  
    int main() {
  5.  
    cout << "Hello, world!!!!" << endl;
  6.  
    return 0;
  7.  
    }

(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

  1.  
    /* SayHello.h */
  2.  
    #include <iostream>
  3.  
    using namespace std;
  4.  
    class SayHello {
  5.  
    public:
  6.  
    void Say();
  7.  
    };
  8.  
     
  9.  
    /* SayHello.cpp */
  10.  
    #include <iostream>
  11.  
    #include "SayHello.h"
  12.  
    using namespace std;
  13.  
     
  14.  
    void SayHello::Say(){
  15.  
    cout << "Hello World!" << endl;
  16.  
    }
  17.  
     
  18.  
    /* main.cpp */
  19.  
    #include <iostream>
  20.  
    #include "SayHello.h"
  21.  
    using namespace std;
  22.  
     
  23.  
    int main () {
  24.  
    SayHello hello;
  25.  
    hello.Say();
  26.  
    return 0;
  27.  
    }
学新通

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

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

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

  1.  
    main.out : main.o SayHello.o
  2.  
    g -o main.out main.o SayHello.o # 注意前面必须是回车
  3.  
    main.o : main.cpp SayHello.h
  4.  
    g -g -c main.cpp
  5.  
    SayHello.o : SayHello.h SayHello.cpp
  6.  
    g -g -c SayHello.cpp
  7.  
    clean: # 清除
  8.  
    rm main.o SayHello.o main.out

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

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

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

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

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

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

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

  1.  
    main.out : main.o SayHello.o
  2.  
    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。

  1.  
    main.o : main.cpp SayHello.h
  2.  
    g -g -c main.cpp

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

  1.  
    SayHello.o : SayHello.h SayHello.cpp
  2.  
    g -g -c SayHello.cpp

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

最后是一些清理工作:

  1.  
    clean:
  2.  
    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步执行最终目标。

那么最终执行情况如下:

学新通

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

5、使用vs code

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

  1.  
    #!/bin/bash
  2.  
     
  3.  
    /usr/share/code/bin/code

同时赋予其权限:

学新通

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

./open_vscode

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

学新通

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

  1.  
    {
  2.  
    "version": "2.0.0",
  3.  
    "tasks": [
  4.  
    {
  5.  
    "type": "cppbuild",
  6.  
    "label": "C/C : g build active file",
  7.  
    "command": "/usr/bin/g ",
  8.  
    "args": [
  9.  
    "-g",
  10.  
    "${file}",
  11.  
    "-o",
  12.  
    "${fileDirname}/${fileBasenameNoExtension}"
  13.  
    ],
  14.  
    "options": {
  15.  
    "cwd": "${fileDirname}"
  16.  
    },
  17.  
    "problemMatcher": [
  18.  
    "$gcc"
  19.  
    ],
  20.  
    "group": {
  21.  
    "kind": "build",
  22.  
    "isDefault": true
  23.  
    },
  24.  
    "detail": "compiler: /usr/bin/g "
  25.  
    }
  26.  
    ]
  27.  
    }
学新通

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

学新通

如果出现如下提示:

学新通

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

 学新通

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

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggghie
系列文章
更多 icon
同类精品
更多 icon
继续加载