原文: http://www.cnblogs.com/zhangShanGui/p/4912135.html

C语言的编译过程和GCC编译参数

C语言的编译一般有三个步骤:

  1. 预编译:

gcc -E -o a.e a.c

预编译a.c文件,生成的目标文件名为a.e

预编译就是将include包含的头文件内容替换到C文件中,同时删除代码中没用的注释

示例:

//main.c

#include <stdio.h>

#include "sum.h"

int main(){

int m = 6;

int n = 5;

int result = sum(m,n);  printf("hello\n%\n",result);

//sum.h

int sum(int x,int y);

运行之后结果为:

第一步就是这样的啦!

2 . 编译

gcc -S -o a.s a.e

将a.e翻译成一个ASCII汇编语言文件a.s.

3 .链接

gcc -o a a.s

这行命令告诉gcc对源程序a.o进行链接,生成可执行程序a

gcc 没有任何参数,表示就是链接

GCC编译器的基本选项如下表:

类型 说明
-E 预处理后即停止,不进行编译、汇编及连接
-S 编译后即停止,不进行汇编及连接
-c 编译或汇编源文件,但不进行连接
-o file 指定输出文件file

C语言的include头文件

  1. include是要告诉编译器,包含头文件
  2. 在C语言中,任何的库函数调用都需要包含头文件
  3. 头文件也相当于一个文档声明
  4. 如果把main函数放在第一个文件中,而把自定义函数放在第二个文件中,那么就需要在第一个文件中声明函数原型
  5. 如果把函数原型包含在一个头文件中,那么就不用每次使用函数的时候都声明其原型了,把函数声明放进头文件中是个好习惯!
  6. 头文件可以不需要编译
  7. 可以查看具体的声明
  8. 头文件加上实现文件的o文件提交给使用者即可,不需要知道源代码
  9. o文件预先编译,所以整个项目编译时,会大大提高编译的时间 。
  10. 当一个文件(A.c文件)依赖于头文件(b.h)时,如果b.c编译之后形成的b.o文件重新编译后,a.o的文件不需要重新编译
  11. 可以极大降低手工复制,粘贴的错误几率

头文件的注意事项:

  1. <头文件>,表示让C语言编译器在系统目录(即gcc编译器的include目录下)下寻找相关的头文件
  2. “头文件”,表示让C语言编译器在用户当前目录下寻找相关的头文件
  3. 如果是使用了C语言库函数的需要的头文件,那么一定是#include<>
  4. 如果是使用了用户自定义的头文件,那么一定是#include“”

最新文章

  1. lucky 的 时光助理
  2. Swing图形用户界面
  3. java基础学习04(数组与方法)
  4. CRC
  5. UVA 11732 strcmp() Anyone? (压缩版字典树)
  6. win7 IIS发布项目遇到的问题
  7. 一起学CUDA(零)
  8. sqlcode、sqlerrm
  9. Android material design support library -- CollapsingToolbarLayout简介
  10. (三)Android中Intent概念及应用
  11. Codeforces Round #191 (Div. 2) D. Block Tower
  12. SpringMVC的视图解析器
  13. Vue.js的从入门到放弃进击录(一)
  14. relative 和 absolute 定位关系
  15. C++标准库bitset类型(简单使用方法)
  16. STM32之使用库函数驱动LED灯
  17. Nginx CONTENT阶段 autoindex、index模块
  18. Bate冲刺 第四天
  19. linux screen 工具
  20. UVA 315 Network (模板题)(无向图求割点)

热门文章

  1. hdu_4787_GRE Words Revenge(在线AC自动机)
  2. osgOcean测试
  3. JVM基础(4)-编译
  4. box-shadow 阴影
  5. wuzhi 五指 基本知识
  6. javascript IE与其他主流浏览器兼容性问题积累
  7. mysql5.6 online ddl—索引
  8. Apache Commons DbUtils 快速上手
  9. cocos2d-x 获得系统语言繁体
  10. yaf for ubuntu安装