C语言的编译过程和GCC编译参数
2024-09-24 06:00:23
C语言的编译一般有三个步骤:
- 预编译:
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头文件
- include是要告诉编译器,包含头文件
- 在C语言中,任何的库函数调用都需要包含头文件
- 头文件也相当于一个文档声明
- 如果把main函数放在第一个文件中,而把自定义函数放在第二个文件中,那么就需要在第一个文件中声明函数原型
- 如果把函数原型包含在一个头文件中,那么就不用每次使用函数的时候都声明其原型了,把函数声明放进头文件中是个好习惯!
- 头文件可以不需要编译
- 可以查看具体的声明
- 头文件加上实现文件的o文件提交给使用者即可,不需要知道源代码
- o文件预先编译,所以整个项目编译时,会大大提高编译的时间 。
- 当一个文件(A.c文件)依赖于头文件(b.h)时,如果b.c编译之后形成的b.o文件重新编译后,a.o的文件不需要重新编译
- 可以极大降低手工复制,粘贴的错误几率
头文件的注意事项:
- <头文件>,表示让C语言编译器在系统目录(即gcc编译器的include目录下)下寻找相关的头文件
- “头文件”,表示让C语言编译器在用户当前目录下寻找相关的头文件
- 如果是使用了C语言库函数的需要的头文件,那么一定是#include<>
- 如果是使用了用户自定义的头文件,那么一定是#include“”
最新文章
- How do I see all foreign keys to a table or column?
- Bootstrap<;基础十一>;字体图标(Glyphicons)
- 如何快速把hdfs数据动态导入到hive表
- JSP-11-Servlet
- Linux和UNIX监控
- Mac 下安装tomcat
- 用 C# 在 Windows 7 中写注册表想到的
- Java使用JSP Tag Files &; JSP EL Functions打造你自己的页面模板
- 弹出框页面中使用jquery.validate验证控件
- 线性表顺序存储方式的C语言实现
- sublime前端编辑器入门与个人使用经验分享
- Trafic control 大框图(HTB )
- linux_操作基本语句
- Linux下SVN+多个Tomcat自动部署
- LeetCode Questions List (LeetCode 问题列表)- Java Solutions
- Node.js学习笔记(四): 全局对象
- 我的sql数据库存储过程分页- -
- BZOJ_1798_[AHOI2009]维护序列_线段树
- Centos 7最小化安装部署PostgreSQL
- Codeforces 1041F Ray in the tube (看题解)