linux学习之C语言(2)------ gcc
来源:互联网 发布:php采集cookie设置 编辑:程序博客网 时间:2024/05/18 20:04
在上节已经知道了通过命令,可以将源程序文件编译生成一个可执行文件,但是这其中经过了哪些步骤,才到最后可执行文件,中间的过程发生了什么,今天就来一起看下gcc的编译过程。
gcc 编译过程 :
第一步: 预处理
#gcc -E hello.c -o hello.i
将宏定义的头文件添加进.i文件中。
第二步:编译阶段
#gcc -s hello.i -o hello.s
将源程序添加了头文件的.i文件编译成汇编语句。
第三步:汇编
#gcc -c hello.s -o hello.o
将上面生成的汇编语句汇编成机器语言。
第四步:链接
#gcc hello.o -o hello
将多个目标模块链接成一个大的目标模块,汇集成一个可执行的二进制代码文件。
通过上述描述的gcc编译过程,相信已经可以理解从源程序到可执行文件的一个具体过程,这对自己对编译有一个深层次的了解。
下面再看一些gcc的一些其他功能,而且,这些在以后程序的编译中会经常用到,主要有警告提示功能,优化功能,调试选项,下面挨个介绍。
gcc警告提示功能:
#gcc -pedantic
在编译时加上这个选项可以对源文件中使用了非标准时产生相应的警告功能。
gcc 优化功能:
#gcc -O[123]
其中,-O和-O1效果相同。
可以在编译时对源程序进行不同等级的优化,从而提高代码的执行效率,-O3优化级别最高,当然了效果相对也最好,-O2,-O1依次次之。在验证时可以写一个很糟糕的但是没有语法错误的程序,分别用-O1,-O2,-O3来优化,并且测试每个的执行时间,从而体会优化的效果。
gcc 调试选项:
#gcc -g 或 -ggdb
-g后面也可加1,2,3,表示不同的调试级别,默认为2
在编写程序时,难免会出错,而调试对于程序员来说,更是家常便饭,在linux 下调试c程序时,需要加上-g 或-ggdb 选项。有关于程序的调试gdb,在下节介绍。
- linux学习之C语言(2)------ gcc
- Linux-GCC学习(C/C++)
- Linux下C语言高级编程之gcc高级用法?
- [我的Linux学习之路]VMware下的RHEL 6.4 安装gcc和gcc-c++(适用于RHEL 6.5)
- C 语言编译器 gcc 命令详解(Linux系统)
- Linux学习之C语言编程训练2
- linux学习之C语言(1)------ 源程序的编译
- linux学习之C语言(3)------ gdb
- linux学习之C语言(5)------ Makefile详解
- linux学习之c语言swap函数
- Linux学习之C语言基础
- LINUX学习之初学GCC
- linux学习之初识GCC
- linux基础学习之 GCC
- linux学习之初识gcc
- Linux之GCC入门学习
- C语言学习笔记:gcc介绍
- C语言再学习 -- GCC编译过程
- 韩国PAYWAVE认证之技术篇2
- JAVA 重载问题
- 递归
- 给大家说明。常用sqlserver 语句命令
- hdu ACM STEPS 1.2.7
- linux学习之C语言(2)------ gcc
- 给大家说明。mysql 找回被删除的数据表
- 网络通信框架Volley之一——获取String数据和图片的异步加载
- 机房的问题(一)
- 2014 西安赛区网络赛 5012Dice
- net start mysql启动mysql,提示发生系统错误5拒绝访问解决方法
- 嵌入式Boa服务器gethostbyname:: Success解决办法
- 编程之美:第一章 1.2 中国象棋将帅问题
- HDU 5015 233 Matrix / 2014 ACM/ICPC Asia Regional Xi'an Online