首页 > 代码库 > gcc/g++ 常用参数

gcc/g++ 常用参数

编译的步骤

参考:gcc参数详解
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步

1.预处理,生成.i的文件[预处理器cpp]。 对应的参数是 -E
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]。对应的参数是 -S
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]。对应的参数是 -c
4.连接目标代码,生成可执行程序[链接器ld]。无参数。

编译步骤举例

有三个文件f1.h、f1.cc、test.cc
内容分别为:
f1.h

void f1();

f1.cc

#include <iostream>
#include "f1.h"

using namespace std;

void f1()
{
    cout << "f1()" << endl;
}

test.cc

#include <iostream>
#include "f1.h"

using namespace std;

int main()
{
    f1();
    cout << "hello" << endl;
}

编译链接过程如下:

[root@VM-127-178 gcc_test]# ls
f1.cc  f1.h  test.cc
[root@VM-127-178 gcc_test]# g++ -S f1.cc
[root@VM-127-178 gcc_test]# g++ -S test.cc
[root@VM-127-178 gcc_test]# ls
f1.cc  f1.h  f1.s  test.cc  test.s
[root@VM-127-178 gcc_test]# g++ -c f1.s
[root@VM-127-178 gcc_test]# g++ -c test.s
[root@VM-127-178 gcc_test]# ls
f1.cc  f1.h  f1.o  f1.s  test.cc  test.o  test.s
[root@VM-127-178 gcc_test]# g++ f1.o test.o
[root@VM-127-178 gcc_test]# ls
a.out  f1.cc  f1.h  f1.o  f1.s  test.cc  test.o  test.s
[root@VM-127-178 gcc_test]# ./a.out
f1()
hello
[root@VM-127-178 gcc_test]#

常用参数

-o:生成的目标文件名称。如果没有-o则默认生成a.out。
-l :需要链接的库名称。即链接库文件去掉lib前缀和.so后的部分。如libev.so就是 -lev;libace.so就是 -lace。
-L :链接库文件的搜索路径。默认链接库的搜索路径为/usr/lib、/usr/lib64
-I :include头文件的搜索路径。默认头文件的路径为/usr/include
-g :增加调试信息。