一. 前置知识——gcc/g++的编译链接过程
要在Linux下进行C++开发,很有必要了解一下g++编译器的一些基本知识。
假设我现在有一个最简单的C++文件:
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!!!!" << endl;
return 0;
}
接下来如何编译呢?简单来说分成两步:先编译,再链接
1. 安装g++编译器
CentOS下安装gcc和g++:
$ yum install gcc
$ yum install gcc-g++
2. 编译hello.cpp
$ g++ -c hello.cpp
输出结果是一个hello.o文件,这是编译过程的生成的中间文件。-c 表示只编译,不链接。
3. 链接hello.o生成hello.out
$ g++ -o hello.out hello.o
输出结果是一个hello.out文件,这是最终的可执行文件。-o 表示输出文件,hello.o是上一步生成的.o文件。
当然,如果第2、3步是可以合并执行,直接执行命令。
$ g++ -o hello.out hello.cpp
然而第2、3步分开执行是有意义的,后面会讲到。
4. 运行hello.out
最后执行以下hello.out验证一下输出结果呗
$ ./hello.out
二. 构建项目
实际开发过程中当然不可能只有一个cpp这么简单,有时候会有非常多的.h和.cpp文件相互配合,那么上面直接通过g++编译可执行文件就没那么简单了。我们需要借助Make这个强大的项目构建工具,帮助我们构建和组织项目代码。
假设现在有如下3个文件:hello.cpp、solution.h和solution.cpp
//solution.h
#include<string>
class Soluton
{
public:
void Say(std::string s);
};
//solution.cpp
#include<iostream>
#include"solution.h"
using namespace std;
void Soluton::Say(string s)
{
cout << s << endl;
}