文章目錄
- 一.Vim編輯器常用快捷鍵
- 二. gcc/g++常用命令
- 三.Makefile撰寫[^1]
- 四.GDB除錯快捷鍵
一.Vim編輯器常用快捷鍵
| 快捷鍵 | 功能 |
|---|---|
ESC | 普通模式 |
i | 插入模式 |
w | 保存 |
q | 退出 |
wqa | 多個視窗保存關閉 |
hor← | 游標左移 |
jor↓ | 游標下移 |
kor↑ | 游標上移 |
lor→ | 游標右移 |
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.og++ -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 |

Makefile參考鏈接 ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102640.html
標籤:其他
上一篇:請大俠說說這個結構與路由對不
