gplusplus使用

c++文件变为可执行文件的过程

预处理 g++ -E test.cpp -o test.i

宏定义展开,头文件展开,条件编译等。不进行语法检查。

编译 g++ -S test.i -o test.s

检查语法,将预处理后文件编译生成汇编文件

汇编 g++ -c test.s -o test.o

将汇编文件生成目标文件(二进制文件)

链接 g++ test.o

C++语言编写的程序需要依赖各种库的,需要把库链接到最终的可执行程序中。

*note:创建的每个.cpp文件中,默认定义一个宏#define __cplusplus,编译器默认给每个.cpp文件创建这个宏。头文件不参与编译,每个.cpp文件为编译单元,编译器独立编译每个.cpp文件*

文件包含指令(#include):文件包含处理是指源文件可以把另一个文件的全部内容包含进来。#include<>常用于包含库函数的头文件。<>表示系统直接按照系统指定的目录检索。#include””常用于包含自定义的头文件。

-I 指定头文件搜索目录

-l 指定程序链接的库

-L 库文件所在的目录名

多文件联编

g++ file.cpp func.cpp -I ./include -o file //如果file.cpp调用的函数声明在头文件中,而实现在func.cpp中,那么func.cpp需要和file.cpp一起编译,生成两个目标文件后,file.o链接时才能找到函数的定义。

使用gdb对程序进行调试

list(l) num(行号) :展示从该行往下多行的代码

list(l) func(函数) :展示从该函数往下多行的代码

breakpoint(b) num(行号) :在该行增加断点

breakpoint(b) func(函数) :在该函数增加断点

查看内存中的值:examine(简写x)

x/[n][f][u]

n:要显示的内存单元数,默认为1

f:要打印的格式

  • x:按照十六进制格式显示变量
  • d:按照十进制格式显示变量
  • u:按照十六进制格式显示无符号整型变量
  • o:按照八进制格式显示变量
  • t:按照二进制格式显示变量
  • c:按照字符格式显示变量
  • f:按照浮点数格式显示变量

u:单元的大小

  • b 字节
  • h 半字,两字节
  • w 字,四字节
  • g 八字节

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top