linux下安装网络工具
sudo yum install net_tools //安装网络工具 为了使用ifconfig指令
sudo yum remove net_tools //卸载网络工具
输入ifconfig 验证是否安装成功 查看网络属性
vim
命令行模式:
yy复制当前行内容
nyy复制光标所在行及以后n行文本内容
p:将复制的内容粘贴
dd删除当前行内容
ndd删除光标所在行及以后n行文本内容
u撤销
ctrl+r反撤销
gg将光标跳到首行
nG将光标跳到n行
0光标跳转到当前行首位置
$光标跳转到当前行尾位置
插入模式:
命令行模式下输入INSERT从光标进入插入模式
i光标出进入
I光标所在行首进入
a从光标所在字符后进入
A从光表所在行尾进入
o光标下一行进入
O光标上一行进入
s删除光标字符后进入INSERT模式
S删除光标所在行后进入INSERT模式
底行模式
文本的保存退出替换
命令行模式下输入shift+; 即 :
:w保存
:q退出
:q!强制退出
:wq保存并退出
:x保存退出
:set number在编辑器下显示行号
:set nonumber在编辑器下不显示行号
:/string 查找字符串string,并将光标跳转到包含该字符串的行首
:%s/string1/string2/g将文本所有string1换成string2
:m,ns/string1/string2/g表示[m,n]行内所有string1换成string2
c++环境搭配
yum install gcc
yum install gcc-c++
查阅是否安装成功
gcc --version
g++ --version
CMake
yum install cmake
c++代码编译运行
ESC ISO
方法1:
1 g++ ***1.cpp //会生成一个a.out可执行程序
2 g++ ***1.cpp -o ***2 //会生成一个叫***2的***1.cpp的可执行程序
程序运行
./可执行程序名称
方法2:
分布编译(重要):
1.预处理(Pre_processing)
将源文件展开,删除注释,宏替换
g++ -E ***.cpp -o ***.i
2.编译
将程序生成汇编语言
g++ -S ***.i -o ***.s
3.汇编
将汇编语言生成二进制
g++ -c ***.s -o ***.o
4.链接
链接相关库文件,生成可执行程序
g++ ***.o -o 可执行文件名
gdb调试
调试正在运行的程序,调试当前程序,调试出错程序
使用
1.准备c++程序
2.编译程序,编译选项中需要加上-g
g++ -g ***.cpp -o ***
3.启动gdb
gdb ./***
4.指令
quit/q退出
run/r 执行可执行程序,如果未设置端点,则从头到尾执行一遍
list/l 展示可执行程序的相关行,默认展示10行
list n.m展示n到m行
list func 展示func周边的程序
break/b设置断点
info break查看所有断点信息
delete breakpoint 编号 删除编号断点
next/n 执行下一条语句
continue/c从断点处运行到下一个断点处
step 跳入指定相关函数中
set variable 变量名=值:表示给某个变量设置相关的值
gdb使用小技巧
shell :可以跟终端指令,表示执行终端相关操作
set logging on:设置开启日志功能,会在当前目录中生成gdb.txt记录接下来调试内容
watchpoint:观察点,如果设置的观察点的值发生改变,则会将该值的旧值和新值一起展示出来
gdb调试出错的文件
当可执行文件处错时,会生成core 文件用与查看出错信息(linux产生core 文件,需要设置)
ulimit -a
ulimit -c unlimited
gdb调试正在运行的文件
./a.out & 将程序后台运行 会出现一个作业号与进程号
pidof a.out查看进程号
gdb -p 进程号 调试指定的进程
库:
Windows:
***.lib 静态库
***.dll 动态库
Linux:
***. a静态库
***.so 动态库
g++ -c ***.c -o ***.o//只编译不生成二进制文件
ar -crs lib***.a ***.o//编译生成静态库
ar用于生成静态库的指令
c:用于创建静态库
r:将文件插入或替换静态库中同名文件
s:重置静态库中索引
使用库文件g++ 源文件 -L 库的路径 -l(小写L) 库名 -I(大写i) 头文件路径
动态库生成
g++ -fPIC -c ***.cpp -o ***.o //编译生成二进制文件
g++ -shared ***.o -o lib***.so//依赖于二进制文件生成一个动态库
使用库文件g++ 源文件 -L 库的路径 -l(小写L) 库名 -I(大写i) 头文件路径
注意:使用动态库时,会出现加载共享库错误,此时我们需要更改路径宏值:
export LD_LIBRARY_PATH=(库的路径)
或者将自己的动态库放入到系统的库函数目录中(/lib /user/lib64)