一.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为中间件
第二步链接生成二进制可执行文件time.o,-g 目的是可以用于gdb调试
如果要将time.cpp编译成动态链接库libtime.so,则执行以下命令:
g++ -o libtime.so -fPIC -shared time.cpp
若usetime.cpp想调用libtime.so动态链接库(usetime.cpp与libtime.so在同一级目录),执行以下命令:其中-Wl . -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 |