Linux编译器GCC
2016-05-17 21:37
316 查看
一;GCC特点:
Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台译器,是GNU的代表作之一。Gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。
二;Gcc基本用法:
Gcc最基本的用法是∶gcc [options] filenames
options:编译器所需要的编译选项
filenames: 要编译的文件名
三;Gcc基本用法:
四;Gcc编译流程:
GCC译器能将C/C++语言源程序、汇编程序形成可执行文件。整个形成过程可以被细分为四个阶段:
Hello.c->预处理->Hello.i->编译->Hello.s->汇编->Hello.o->链接->Hello(可执行文件)
Gcc通过后缀来区别输入文件的类别,常见类型有:
1 .c为后缀的文件:C语言源代码文件
2 .a为后缀的文件: 是由目标文件构成的库文件
3 .C,.cc或.cxx 为后缀的文件: 是C++源代码文件
4 .h为后缀的文件: 头文件
5 .o为后缀的文件: 是译后的目标文件
6 .s为后缀的文件: 是汇编语言源代码文件
五;Gcc编译选项:
掌握Gcc的使用方法,最重要的是掌握Gcc的译选项,Gcc编译器的编译选项大约有100多个,其中多数我们根本就用不到,这里只介绍其中最基本、最常用的参数:
A . -o output_filename:确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
B . -O,对程序进行优化编译、链接,采用这个
选项,整个源代码会在编译、连接过程中进行
优化处理,这样产生的可执行文件的执行效率
可以提高,但是,编译、连接的速度就相应地
要慢一些。
C . -O2,比-O更好的优化译、连接,当然整个编译、连接过程会更慢。
例子:
gcc optimize.c -o optimize
time ./optimize
gcc –O optimize.c -o optimize
time ./optimize
对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善。
D. -g:产生调试工具(GNU的gdb)所需要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。
E. -I dirname: 将dirname所指出的目录作为编译器寻找头文件的标准路径。
C程序中的头文件包含两种情况∶
#include < A.h >
#include “B.h”
对于< >,gcc在系统预设的头文件目录(如/usr/include)中搜寻相应的文件;而对于””,gcc在当前目录中搜寻头文件。-I选项的作用是告诉gcc,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。
编译错误与编译警告都是我们的程序设计中经常遇到的问题. 编译错误一般是代码中出现语法错误,程序无法编译执行,必须修改. 编译警告是编译器发现程序中不合理的地方(比如类型不匹配),建议最好修改,但不修改也可以译执行。
• -Wall:生成所有警告信息
• -w:不生成任何警告信息
Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台译器,是GNU的代表作之一。Gcc可以在多种硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。
二;Gcc基本用法:
Gcc最基本的用法是∶gcc [options] filenames
options:编译器所需要的编译选项
filenames: 要编译的文件名
三;Gcc基本用法:
hello.c: #include <stdio.h> int main(void) { printf (Hello world!\n); return 0; } # gcc hello.c # ./a.out
四;Gcc编译流程:
GCC译器能将C/C++语言源程序、汇编程序形成可执行文件。整个形成过程可以被细分为四个阶段:
Hello.c->预处理->Hello.i->编译->Hello.s->汇编->Hello.o->链接->Hello(可执行文件)
Gcc通过后缀来区别输入文件的类别,常见类型有:
1 .c为后缀的文件:C语言源代码文件
2 .a为后缀的文件: 是由目标文件构成的库文件
3 .C,.cc或.cxx 为后缀的文件: 是C++源代码文件
4 .h为后缀的文件: 头文件
5 .o为后缀的文件: 是译后的目标文件
6 .s为后缀的文件: 是汇编语言源代码文件
五;Gcc编译选项:
掌握Gcc的使用方法,最重要的是掌握Gcc的译选项,Gcc编译器的编译选项大约有100多个,其中多数我们根本就用不到,这里只介绍其中最基本、最常用的参数:
A . -o output_filename:确定可执行文件的名称为output_filename。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
B . -O,对程序进行优化编译、链接,采用这个
选项,整个源代码会在编译、连接过程中进行
优化处理,这样产生的可执行文件的执行效率
可以提高,但是,编译、连接的速度就相应地
要慢一些。
C . -O2,比-O更好的优化译、连接,当然整个编译、连接过程会更慢。
例子:
#include <stdio.h> int main(void) { double counter; double result; double temp; for(counter = 0; counter < 2000.0 * 2000.0 * 2000.0 / 20.0 + 2020; counter +=(5 - 1) / 4) { temp = counter / 1979; result = counter; } printf(Result is %lf\\n, result); return 0; }
gcc optimize.c -o optimize
time ./optimize
gcc –O optimize.c -o optimize
time ./optimize
对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善。
D. -g:产生调试工具(GNU的gdb)所需要的符号信息,要想对编译出的程序进行调试,就必须加入这个选项。
E. -I dirname: 将dirname所指出的目录作为编译器寻找头文件的标准路径。
C程序中的头文件包含两种情况∶
#include < A.h >
#include “B.h”
对于< >,gcc在系统预设的头文件目录(如/usr/include)中搜寻相应的文件;而对于””,gcc在当前目录中搜寻头文件。-I选项的作用是告诉gcc,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。
编译错误与编译警告都是我们的程序设计中经常遇到的问题. 编译错误一般是代码中出现语法错误,程序无法编译执行,必须修改. 编译警告是编译器发现程序中不合理的地方(比如类型不匹配),建议最好修改,但不修改也可以译执行。
• -Wall:生成所有警告信息
• -w:不生成任何警告信息
相关文章推荐
- Linux下文件的三个时间:ctime、mtime、atime的区别
- windows 8 wmware player centos 安装 伪分布式 hadoop
- 制作u盘启动linux系统
- jrtplib 3.9.1 交叉编译 linux arm
- RHEL7内核模块的操作和使Linux系统支持ntfs读写
- 【C语言】实现Linux下的who命令
- cp 强制覆盖不提示
- 详解CentOS设置163的yum源的过程
- Ubuntu、Windows 、Linux集合
- Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (usin
- CentOS yum 源的配置与使用
- 【高性能】Linux挂载GPT硬盘
- Linux中读写权限
- Linux中解析json---jq
- linux 多线程学习一:互斥
- 深入了解linux下的last命令及其数据源
- linux下i2c驱动笔记
- VirtualBOX Linux与主机Windows Socket 通信
- 每天一个Linux命令(19)find命令_初识
- centos6.6下openoffice安装过程