当前位置:   article > 正文

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

centos 启动vs code

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. int main() {
  4. cout << "Hello, world!!!!" << endl;
  5. return 0;
  6. }

(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. /* SayHello.cpp */
  9. #include <iostream>
  10. #include "SayHello.h"
  11. using namespace std;
  12. void SayHello::Say(){
  13. cout << "Hello World!" << endl;
  14. }
  15. /* main.cpp */
  16. #include <iostream>
  17. #include "SayHello.cpp"
  18. using namespace std;
  19. int main () {
  20. SayHello hello;
  21. hello.Say();
  22. return 0;
  23. }

可以看到这个简单例子包括头文件引用、定义和实现分离等情况,如果直接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. /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++编译器。最后运行成功。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/468994
推荐阅读
相关标签
  

闽ICP备14008679号