环境:Ubuntu Server 16.04
g++:5.4.0
gcc:5.4.0
gdb:7.11.1
cmake:3.5.1
make:GNU Make 4.1
编译c++时,推荐使用g++。
一、命令行方式
1.安装编译环境:
// 以下语句一句一句执行
sudo apt update
// 该句执行后同时安装gcc g++ gdb
sudo apt install build-essential gdb
// 安装完成后分别输入下面的命令查看版本
gcc --version
g++ --version
gdb --version
// 安装cmake
sudo apt install cmake
// 安装成功后,输入下面的命令查看版本
cmake --version
如果你需要在64位环境下编译32位程序,那么还需要安装下面两个库:
sudo apt install gcc-multilib g++-multilib
2.创建一个测试c++文件:test.cpp:
vi test.cpp
输入代码:
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" <<endl;
return 0;
}
保存并退出。
3.直接使用下面的命令,就可以编译:
g++ test.cpp -o test
这个时候当前目录会多一个test文件,使用命令:./test,就会在界面输出hello world。
4.上一步是一次到位,实际上它的过程是这样的:
// 预处理Pre-Processing
// -E 让编译器仅对输入文件进行预处理
g++ -E test.cpp -o test.i
// 编译-Compiling -S 让g++在为c++代码产生汇编语言文件后停止编译
// g++ 产生的汇编语言扩展名是.s
g++ -S test.i -o test.s
// 汇编-Assembling
// -c 让g++仅把源代码编译为机器语言,这里的c是小写
// 创建的文件扩展名为.o
g++ -c test.s -o test.o
// 链接-Linking
// bin文件
g++ test.o -o test
如果比较的话,会发现这一步生成的test文件和上一步是完全一样的。
5.重要参数:
// -g 产生能够被调试器gdb使用的调试信息,以调试程序
// 产生带调试信息的可执行文件test
g++ -g test.cpp -o test
// -O[n] 优化源代码
// -O等价于-O1,-O0表示不做优化,-O1、-O2、-O3表示不同的优化等级。
// -o小写表示输出,指定输出文件名,和大写有区别
g++ test.cpp -O3 -o test
// -l和-L 指定库文件 | 指定库文件路径
// 在/lib和/usr/lib和/usr/local/lib里的库直接用-l就可以链接
// 链接glo