public.h头文件编写
#include<iostream>
using namespace std;
void func();
public.cpp源文件编写
#include "public.h"
using namespace std;
void func()
{
cout<<"func"<<endl;
}
test.cpp包含主函数的源文件的编写
#include<iostream>
#include "public.h"
using namespace std;
int main()
{
func();
cout<<"nihao"<<endl;
}
编写好上述代码,保存并退出
编译运行
[old@localhost ~]$ vim public.h
[old@localhost ~]$ vim public.cpp
[old@localhost ~]$ vim test.cpp
[old@localhost ~]$ g++ -o test test.cpp public.cpp -O2
[old@localhost ~]$ ./test
func
nihao
注意
-o 指定输出的文件名,这个名称不能和源文件同名。如果不给出这个选项,则生成可执行文件a.out。
-g 如果想对源代码进行调试,必须加入这个选项。
-On 在编译、链接过程中进行优化处理,生成的可执行程序效率将更高。
-c 只编译,不链接成为可执行文件,通常用于把源文件编译成静态库或动态库。
-std=c++11 支持C++11标准。
优化选项:
-O0: 不做任何优化,这是默认的编译选项。
-O或-O1: 对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用本项优化,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。
-O2: 这是推荐的优化等级。与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。
-O3: 这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的。
如果使用了优化选项:1)编译的时间将更长;2)目标程序不可调试;3)有效果,但是不可能显著提升程序的性能。