系列文章目录
·【Linux下C++开发】第一篇·Linux系统基本操作
·【Linux下C++开发】第二篇·开发环境搭建及gcc编译器
目录
系列文章目录
一、安装GCC/GDB、CMake
二、GCC编译器
1.编译过程
2.g++重要编译参数
一、安装GCC/GDB、CMake
gcc是编译器,gdb是调试器,使用前需要先进行安装:
$ sudo apt update $ sudo apt install build-essential gdb $ sudo apt install cmake
二、GCC编译器
使用gcc指令编译C代码;使用g++指令编译C++代码
1.编译过程
预处理(Pre-Processing) - .i文件编译(Compiling) - .s文件汇编(Assembling) - .o文件链接(linking)- bin文件
$ g++ -E test.cpp -o test.i #-E表示仅对输入文件进行预处理
$ g++ -s test.i -o test.s #-s表示g++在为c++代码产生了汇编语言文件后停止编译
$ g++ -c test.s -o test.o #-c表示g++仅把源代码编译为机器语言的目标代码
$ g++ test.o -o test #产生可执行文件test
但是在平时的编译过程中,我们只需要下面这一条代码即可编译生成一个可执行文件:
$ g++ test.cpp -o test
2.g++重要编译参数
| -g | 产生带调试信息的可执行文件,可被GDB使用 |
| -O[n] | 优化源代码,一般用-O2 |
| -l 和 -L | 指定库文件/指定库文件路径 |
| -I | 指定头文件搜索目录 |
| -Wall | 打印警告信息 |
| -w | 关闭警告信息 |
| -std=c++11 | 设置编译标准 |
| -o | 指定输出文件名 |
| -D | 定义宏 |
$ cd src #进入到src源代码文件夹中 $ g++ libtest.cpp -c -I../include #汇编,生成.o文件 $ ar rs libtest.a libtest.o #生成静态库libtest.a $ cd .. $ g++ main.cpp -Iinclude -Lsrc -llibtest -o test #运行可执行文件(2)生成共享库
$ cd src $ g++ libtest.cpp -I../include -fPIC -shared -o libtest.so #创建共享库 $ cd .. g++ main.cpp -Iinclude -Lsrc -llibtest -o test #运行可执行文件
三、GDB调试器 1.常用调试命令参数
调试开始:gdb [exe]
| h | 查看命令帮助 |
| r | 重新开始运行文件 |
| start | 单步执行 |
| l | 查看源代码 |
| set | 设置变量的值 |
| n | 单步调试(逐过程,函数直接执行) |
| s | 单步调试(逐语句,跳到函数内执行) |
| finish | 结束当前函数,返回到函数调用点 |
| i | 查看函数内部变量的数值 |
| b | 在第num行设置断点 |
| d | 删除断点 |
| q | 退出gdb |
| 输出某个变量的值 |
#includeusing namespace std; int main() { cout << "Hello World!" << endl; int sum; for(int i=0;i<100;i++) { sum += i; } cout << "sum is: " << sum << endl; return 0; }
对以上这段代码进行gdm调试
$ g++ -g test.cpp -o test $ gdb test #调试开始 $ b 10 #在10行设置断点 $ r #运行程序 $ p sum #打印输出sum的值 $ q #退出gdb调试



