gcc 编译.c文件的编译过程
2016-01-01 16:36
239 查看
gcc编译的时候可以用的参数比多,也不太好记,所以总结了一下自己的记忆方法。
1)首先gcc编译的时候会有不同种的文件生成,按照从先到后列一下
1.源文件:一般你编写的.c文件
2.预编译文件:gcc把源文件中的宏定义等展开放到预编译文件中,用.i文件来表示
3.汇编文件:gcc把.i文件进一步编译生成汇编文件,用.s文件来表示,一般自己写的汇编也是.s表示的
4.目标文件汇编器把.s文件生成.o文件
5.可执行文件:链接器把.o文件链入静态库或者别的.o文件,生成可执行文件
2)gcc命令中-o参数的说明
-o参数表示的是outfile的意思,跟在该参数后面的是你想给予的编译后的文件的名称
通过-o参数来描述gcc中其他的参数,我把他们分成三种:
1.不需要使用-o参数的
2.可用可不用的
3.一定要用的
对于第一种来说:如果想要生成.o文件,就不需要加入-o参数,因为编译器会自动生成一个.o文件
比如说:你有一个hello.c文件,通过gcc -c hello.c就可以生成一个hello.o文件
对于第二种来说:如果想要生成.s汇编文件或者是最后的可执行文件,你可以不加-o参数,因为编译器会生成
一个a.out文件,但是这样表示的文件意义不明确
比如说:你有一个hello.c文件,通过gcc hello.c生成了可执行文件a.out,通过gcc -s hello.c也会生成一个
a.out汇编文件
对于第三种来说:如果只是进行预编译,就一定要加-o参数,不然gcc -E hello.c会打屏,没有任何文件生成
1)首先gcc编译的时候会有不同种的文件生成,按照从先到后列一下
1.源文件:一般你编写的.c文件
2.预编译文件:gcc把源文件中的宏定义等展开放到预编译文件中,用.i文件来表示
3.汇编文件:gcc把.i文件进一步编译生成汇编文件,用.s文件来表示,一般自己写的汇编也是.s表示的
4.目标文件汇编器把.s文件生成.o文件
5.可执行文件:链接器把.o文件链入静态库或者别的.o文件,生成可执行文件
2)gcc命令中-o参数的说明
-o参数表示的是outfile的意思,跟在该参数后面的是你想给予的编译后的文件的名称
通过-o参数来描述gcc中其他的参数,我把他们分成三种:
1.不需要使用-o参数的
2.可用可不用的
3.一定要用的
对于第一种来说:如果想要生成.o文件,就不需要加入-o参数,因为编译器会自动生成一个.o文件
比如说:你有一个hello.c文件,通过gcc -c hello.c就可以生成一个hello.o文件
对于第二种来说:如果想要生成.s汇编文件或者是最后的可执行文件,你可以不加-o参数,因为编译器会生成
一个a.out文件,但是这样表示的文件意义不明确
比如说:你有一个hello.c文件,通过gcc hello.c生成了可执行文件a.out,通过gcc -s hello.c也会生成一个
a.out汇编文件
对于第三种来说:如果只是进行预编译,就一定要加-o参数,不然gcc -E hello.c会打屏,没有任何文件生成
相关文章推荐
- 最常用的20个监控Linux系统性能的命令行工具
- 258. Add Digits
- 管道与进程间通信
- 末了2015
- 北京Uber优步司机奖励政策(1月1日)
- 优化数据页面(18)——标注keyword
- fortran 函数的调用标准
- 局域网ip
- Spring缓存注解
- 使用栈结构完毕四则运算
- WIN32服务程序(三):完整的服务程序实例
- hdoj1534Schedule Problem【差分约束】
- Sun JDK监控和故障处理工具.
- UNIX环境高级编程——进程(三)
- 2016,我要前进
- 数据结构学习——栈
- 如何在iterm2中设置自动远程登录(附跳板机攻略)
- JAVA线程间协作:Condition
- 图文详解Andorid中用Shape定义GradientDrawable
- JAVA线程间协作:Condition