一.Vim编辑器常用快捷键
快捷键 | 功能 |
---|---|
ESC | 普通模式 |
i | 插入模式 |
w | 保存 |
q | 退出 |
wqa | 多个窗口保存关闭 |
h or← | 光标左移 |
j or↓ | 光标下移 |
k or↑ | 光标上移 |
l or→ | 光标右移 |
u | 撤销 |
ctrl+r | 返回 |
/ | 查找 |
ctrl+v 方向键 I "想输入的字符" ESC ESC | 在多段行首加入某字符(用于注释) |
ctrl+v 方向键 d | 删除多段行首某字符(用于取消注释) |
v 方向键 | 选择代码块 |
y | 复制 |
x | 剪切 |
p | 粘贴 |
vs: file文件名 | 水平分屏 |
ctrl+w h/l | 光标选择左/右分屏 |
ctrl+w H/L | 将当前分屏左移/右移 |
二. gcc/g++常用命令
gcc用于c工程,g++用于C++工程
假设当前C++工程文件为:头文件 time.h,源文件 time.cpp usetime.cpp
生成二进制可执行文件helloworld步骤:
g++ -c time.cpp -o time.o
g++ -c usetime.cpp -o usetime.o
g++ -g time.o usetime.o -o helloworld
./helloworld
第一步中由time.cpp usetime.cpp生成的time.o usetime.o为中间件
第二步链接生成二进制可执行文件helloworld,-g 目的是可以用于gdb调试
如果要将time.cpp编译成动态链接库libtime.so,则执行以下命令:
g++ -o libtime.so -fPIC -shared time.cpp
若usetime.cpp想调用libtime.so动态链接库(usetime.cpp与libtime.so在同一级目录),执行以下命令:其中-Wl,-rpath= . -L . 点号 .指当前目录
g++ usetime.cpp -o out -Wl,-rpath=. -L. -ltime
若将libtime.so拷贝到 /usr/lib 目录中,执行以下命令:
g++ usetime.cpp -o out -ltime
三.Makefile编写1
Makefile编写基于gcc/g++命令
例如C++工程文件目录为Self_Makeflie
Self_Makefile文件夹下含有
头文件目录::include include/time.h
源程序目录:src src/time.cpp usetime.cpp
二进制可执行文件夹:bin
编译生成的中间件: obj
链接库:lib
Makefile: Makefile
Makefile写法如下:
基本规则:
目标:依赖1 依赖2。。。
命令
$(patsubst 原模式, 目标模式, 文件列表)
- wildcard 通用扩展符,寻找目录下所有.cpp文件
- notdir去除指定文件的地址,如: 将./src/time.cpp转换成 time.cpp
- patsubst 生成指定目录中以.cpp为后缀转换成以.o为后缀的文件名,如:将time.cpp转换成time.o
- %.xx 目录下所有.xx文件
- $^ 所有依赖项 (一般用于生成二进制可执行文件时的依赖项,因为依赖多个.o文件)
- $< 第一个依赖项 (一般用于生成.o文件时的依赖项,因为依赖单个.cpp文件)
- $@ 生成目标项
INC_DIR=./include
SRC_DIR=./src
OBJ_DIR=./obj
BIN_DIR=./bin
SRC=${wildcard ${SRC_DIR}/*.cpp}
OBJ=${patsubst %.cpp, ${OBJ_DIR}/%.o, ${notdir ${SRC}}}
TARGET=out
BIN_TARGET=${BIN_DIR}/${TARGET}
CC=g++
CFLAGS= -g -I${INC_DIR}
${BIN_TARGET}:${OBJ}
# ${CC} ${OBJ} -o ${BIN_TARGET}
${CC} $^ -o $@
${OBJ_DIR}/%.o:${SRC_DIR}/%.cpp
${CC} ${CFLAGS} -c $< -o $@
.PHONY:clean
clean:
-rm -rf ${OBJ} ${BIN_TARGET}
要编译工程生成可执行文件,则在含有Makefile的目录下执行命令make:
pi@raspberrypi:~/CPlus_Project/Self_Makefile $ make
g++ -g -I./include -c src/time.cpp -o obj/time.o
g++ -g -I./include -c src/usetime.cpp -o obj/usetime.o
g++ obj/time.o obj/usetime.o -o bin/out
此时生成的time.o usetime.o文件都存放在obj文件夹内
此时生成的二进制可执行文件out存放在bin文件夹内
要清除生成的中间件.obj文件及可执行文件则执行命令make clean:
pi@raspberrypi:~/CPlus_Project/Self_Makefile $ make clean
rm -rf ./obj/time.o ./obj/usetime.o ./bin/out
清除了obj文件夹内的中间文件time.o usetime.o以及bin文件夹内的out
四.GDB调试快捷键
指令 | 功能 |
---|---|
gdbtui filename | 进入调试 |
break 行数 | 设置断点 |
info b | 查看断点 |
delete 断点标号 | 删除断点 |
ctrl+l | 刷新代码块 |
display 变量名 | 查看变量 |
undisplay 变量标号 | 不查看变量 |
s | 单步运行 |
next | 不进入子函数运行 |
cont | 从当前断点运行到下一断点 |
focus cmd | 将光标移位到cmd |
focus src | 将光标移位到src |