系列文章目录
·【Linux下C++开发】第一篇·Linux系统基本操作
·【Linux下C++开发】第二篇·开发环境搭建及gcc编译器
目录
一、安装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 | 定义宏 |
3.生成库文件并编译
(1)生成静态库
$ 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 #运行可执行文件