linux-func-gcc

介绍

gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。

gcc过程

gcc过程

安装

g++安装

1
2
3
4
5
6
7

# 高级版本系统或g++安装提示:yum install gcc-c++ libstdc++-devel 执行下面
yum install gcc-c++ libstdc++-devel

# 低级版本的老系统
yum install gcc
yum install g++

用法

1
gcc(选项)(参数)

选项

选项 描述
-o 指定生成的输出文件,(i、s、o、可执行文件等)
-E 只激活预处理,生成扩展名为.i的预处理后文件
-S 只激活预处理和编译,生成扩展名为.s的汇编代码文件
-c 只激活预处理、编译和汇编,生成.o 目标代码文件
-Wall 显示警告信息;
-g 在目标文件中嵌入调试信息,以便gdb之类的调试程序调试
-On(O[优化等级]) 优化程序,程序优化后执行速度会更快,程序的占用空间更小。
-pipe 加快编译的速度,节约时间
-Idir(I[目录名]) 将dir目录加入搜索头文件的目录路径
-Ldir(L[目录名]) 将dir目录加入搜索库的目录路径
-llib 链接lib库

-O

gcc 提供了三个级别的优化选项: O1 O2 O3,理论上-O3 选项可以生成执行效率最高的代码,但以为着更大的风险。通常, -O1 -O2 选项就可以满足绝大多数的优化要求。如, Nginx 编译就采用-O1

头文件与库位置

1
2
3
4
/usr/include
/usr/local/include/
/usr/lib
/usr/local/lib

参数

参数 描述
C源文件 指定C语言源代码文件。

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 头文件和宏的展开
gcc -E hello.c -o hello.i

# 生成汇编程序
gcc -S hello.i -o hello.s
gcc -S hello.c -o hello.s

# 生成可重定位目标文件
gcc -c hello.s -o hello.o
gcc -c hello.c -o hello.o

# 将库以及.o文件进行链接生成可执行文件
gcc hello.o -o hello
gcc hello.c -o hello

# 链接math库
gcc hello.c -o hello -lm