如果想要学习如何在CentOS 7中安装配置gcc、g++、gdb、zhs和oh-my-zsh,可以点击这里
gcc同理于g++的基本操作,只需要将所有
g++
命令切换成gcc
并且将编译的文件换成.c
后缀的即可
前文已经说明g++等的环境配置
现在开始使用vim来编写并运行一个简单的hello world
首先在桌面创建一个文件夹,然后在终端中打开这个文件夹
输入(如果不会使用vim可以参考文末)
vim hello.cpp
输入以下代码
#include
using namespace std;
int main(){
cout<<"hello world!!!"<
然后输入
g++ hello.cpp
或者(这种输入会遇到什么情况会在下文说明)
gcc main.c -o main.exe
g++ hello.cpp
命令完成之后输入ls
命令可以看到,当前文件夹下面多出来了一个a.out文件
然后输入命令
./a.out
或者
./a.out hello.cpp
# 你的cpp文件名称.cpp
其他编译情况说明:
如果您输入的是gcc main.c -o main.exe
则会看到[你的用户名@centos-7 你的文件夹名字]$ ls main.cpp main.exe
此时同理于
a.out
,只需要输入./main.exe
即可运行,并且的到相同结果!
甚至在-o
后面的参数可以不加后缀,并且随意命名,比如gcc main.c -o test
编译完成之后也会产生一个test文件,并且不带后缀,此时输入./test
即可运行,并且的到相同结果!
至此已经完成g++基本操作,经过简单的分析可以总结出:
首先我们知道一个程序的运行需要两个步骤:第一步是编译,第二步是运行,我们g++命令所做的工作就是将我们编写的程序代码给编译一边,如果编译通过了,就会生成一个a.out
文件用于程序的运行,接下来只需要调用a.out
就可以顺利运行了
前面我们已经介绍了如何使用g++去编译运行一个简单的C程序,但是我们发现如果我们去写一个代码量比较多的程序,通过g++的编译错误提示去纠正调试,就变得非常非常的繁琐,那么有没有什么更加优雅的debug方式呢?
答案就是gdb
在安装完成gdb之后,直接在我们编写好cpp文件的文件夹下输入命令
gdb main.cpp
可以发现在提示信息的最后写有 不可识别的文件格式
那么如何使我们的运行文件可以被识别呢?
在编写时在gcc main.c -o main
后添加上-g
即可使文件被识别
指令 | 作用 |
---|---|
(gdb) b xxx | break 在源代码指定的某一行设置断点,其中 xxx 用于指定具体打断点的位置。 |
(gdb) r | run 执行被调试的程序,其会自动在第一个断点处暂停执行。 |
(gdb) c | continue 当程序在某一断点处停止运行后,使用该指令可以继续执行,直至遇到下一个断点或者程序结束。 |
(gdb) n | next 令程序一行代码一行代码的执行。 |
(gdb) p xxx | print 打印指定变量的值,其中 xxx 指的就是某一变量名。 |
(gdb) l | list 显示源程序代码的内容,包括各行代码所在的行号。 |
(gdb) q | quit 退出 |
进入gdb之后可以输入以上指令进行调试,如果需要查看帮助,直接输入help
即可
vim用于在终端中创建并编写一个文件,vi和vim操作相同,只是缺少色彩提示而已(意思就是使用vi命令去编辑一个文本,编辑的时候是黑白的,不好看)
比如我想要写一个main.cpp
文件那么我需要在终端中输入
vim main.cpp
同理我也可以写一个.txt
文件
vim data.txt
此时我们不论在键盘上做任何输入,都不会输入到main.cpp
中去,原因是我们还没有进入编辑模式
此时键盘输入i
即可进入编辑模式
i
然后输入以下内容给.cpp文件
#include
using namespace std;
int main(){
cout<<"hello world!!!"<
输入完成之后在键盘上点击ESC输入
:wq
即可保存我们所编写的内容
至此我们已经完成了vim编写一个文件的基本操作,但是我们发现在使用的过程中会遇到很多其他的问题:
我们发现修改了一个不该修改的文件,或者修改错了一个文件的一些内容,但是我们并不记得原本是什么内容的了,此时键盘上点击ESC输入
:q!
此时可以强制离开vim编辑模式,并且不对我们所改写的内容进行保存
我们需要对一个只读文件
进行改写,虽然我们有权限对这个文件进行读操作,但是我们的改写操作都是无效的此时我们可以先进入编辑模式(输入i
)然后在改写完成之后输入
:wq!
这个命令可以强制改写文件
其他说明:
w
代表:写
q
代表:离开
!
代表:强制
使用三者的组合可以完成我们的一些基本需求
如果觉得使用vim编写还是不够方便可以在centos上下载一个vs code去写代码
此处介绍如何在CentOS 7中安装vs code(一步一步ctrl cv就行了)
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'
yum check-update
sudo yum install code
打开vs code
/usr/share/code/bin/code
或者直接在用户模式下输入code
也可以直接打开vs code
首先要保证Linux中已经安装了g++,不会安装可以查阅这篇文档
如何在vs code中编写运行一个cpp文件呢?
方法一:使用vs code提供的插件
应用商店中搜索插件 C/C++
和 Code Runner
安装完成之后在工作区添加一个文件夹到你指定的目录下,然后在文件夹下添加一个文件,插入以下代码
#include
using namespace std;
int main(){
cout<<"hello world!!!"<
然后Ctrl+S保存文件,并命名为后缀为.cpp
的文件
此时可以看到右上角有一个三角形的符号(如果没有安装Code Runner
插件是不会存在的)
点击那个三角形就可以编译运行了
方法二:
前面的步骤(安装插件、添加文件夹到工作区、创建一个cpp文件)都和方法一相同,但是不需要安装Code Runner
插件
昨晚这些工作之后我们需要在文件夹下添加一个新的名为.vscode
的文件夹,在这个文件夹里添加两个文件launch.json
和tasks.json
将以下内容添加进入两个文件中
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [{
"label": "compile",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
完成之后是这样的:
CODE和main.cpp是我自己命名的文件和文件夹名称
操作完成之后记得Ctrl+S进行文件的保存
然后键入F5就可以编译运行了!