赞
踩
先更新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
注意与自己的操作系统匹配。
得到如下步骤:
- 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用户可能不成功)
然后把这两个安装上:(搜索框中搜索)
打开centOS的浏览器,找到vscode官网,下载.rmp后缀的文件
点击它,然后开始下载:
但是还是慢,甚至下载失败。鼠标选中,右键点击复制下载链接:
粘贴到新的栏目,如下:
将http://az764295.vo.msecnd.net 替换为 http://vscode.cdn.azure.cn
然后回车,1分钟之内即下载完毕。在文件夹中显示,
然后在空白位置,右键,在终端中打开。
然后分别输入几个命令,如下红色框:
到此处,完成安装。 命令行中键入:
/usr/share/code/bin/code
就打开了vs code,如下图:(用普通用户,用root用户可能不成功)
然后把这两个安装上:(搜索框中搜索)
安装gcc、g++,分别键入如下命令:
- su
- yum install gcc
- gcc -v
- yum install gcc-c++
- g++ -v
编写一个cpp文件,使用vi hello.cpp命令,并写一个简单的程序:
- #include <iostream>
- 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
实际开发过程中不可能只有一个cpp程序,有时候有较多的.h和.cpp文件,那直接通过g++编译可执行文件就没那么简单了。此刻需要借助Make这个强大的项目构建工具,帮助构建和组织项目代码。假设现在有如下3个文件:main.cpp、SayHello.h和SayHello.cpp
- /* SayHello.h */
- #include <iostream>
- using namespace std;
- class SayHello {
- public:
- void Say();
- };
-
- /* SayHello.cpp */
- #include <iostream>
- #include "SayHello.h"
- using namespace std;
-
- void SayHello::Say(){
- cout << "Hello World!" << endl;
- }
-
- /* main.cpp */
- #include <iostream>
- #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步执行最终目标。
那么最终执行情况如下:
注意,如果要执行clean,需要手动在命令行输入make clean
第2节介绍了如何打开vs code,每次都键入那么长的命令行比较麻烦,这里写一个脚本,如下:
- #!/bin/bash
-
- /usr/share/code/bin/code
同时赋予其权限:
以后直接执行就打开vs code啦:
./open_vscode
下面,新建一个project文件夹,把前面的三个文件代码放到project中的code文件夹中,再建一个.vscode文件夹,里面建一个tasks.json(作用是告诉 VS Code 如何构建(编译)程序,将调用 g++编译器从源代码创建一个可执行文件。),如下:
将如下内容复制到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++"
- }
- ]
- }
然后运行,得到结果,算是配好环境了。
如果出现如下提示:
我们选择配置任务,然后如下:
可以选择我们刚才安装的g++编译器。最后运行成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。