Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64112
  • 博文数量: 23
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-29 10:06
文章分类

全部博文(23)

文章存档

2015年(21)

2014年(2)

我的朋友

分类: 嵌入式

2015-01-07 13:27:56

在Linux系统中可执行文件没有统一的后缀,系统是通过文件的属性来区分可执行文件和不可执行文件。用gcc编译生成的可执行文件,若编译时没有指明可执行文件的名字,gcc将生成一个名为a.out的文件。
.c :是C语言源代码文件
.a :由目标文件构成的档案库文件(静态库文件)
.C、.cc、.cpp、.C++、.cp、.cxx :C++源码文件
.h :程序包含的头文件(适用于C,C++,Objective-C,Objective-C++)
.hh,.H,.hp,.hxx,.hpp,.HPP,.h++,.tcc :C++头文件
.i :已经预处理过的C源代码文件
.ii :已经预处理过的C++源代码文件
.m :Objective-C源代码文件(Note that:必须和“libobjs”库相链接,才能保证Objective-C能正常工作)
.mi :已经预处理过的Objective-C源文件
.mm、.M :Objective-C++源代码文件(Note that:必须和“libobjs”库相链接,才能保证Objective-C能正常工作
.mii :预处理过的Objective-C++源文件

.o :编译后的目标文件
.s :汇编语言源代码文件
.S :经过预编译的汇编语言源代码文件

使用GCC编译器时,必须给出一系列的调用参数和文件名。不同类参数先后顺序对执行结果没有影响,只有在使用同类参数时的先后顺序才需要考虑。
对于.s和.S文件的一些看法:对.s文件,汇编器(linux下用的是as),只做必要的汇编处理,不会像cpp处理.c文件那样预处理。
.S采用了as的高级功能,比如预处理。
以前的as叫做gas,功能比较弱,没有这样的预处理功能,也不能对实模式代码进行汇编。
所以Linux早期内核代码中的启动部分(实模式代码),是用as86,也就是AT&T编译器编译的。
所以早期内核有使用了两种汇编语言。
阅读(2648) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~