一. Gcc的基本命令
Gcc是linux环境下的编译器,也是linux c程序的编译命令,下面实例它的一些应用:gcc file.c会在当前目录下生成一个a.out文件,也就是file.c文件对应的可执行文件,这个命名是默认的。
gcc –o finalfile sourcefile1.c,sourcefile2.c,sourcefile3.c,,,将后面的若干源代码文件编译链接生成可执行的finalfile文件。-o选项用来指定输出文件的文件名。也可以 gcc source1.source2.c ... -o main
gcc –S sourcefile.c 生成源代码文件对应的汇编文件sourcefile.s。
gcc –c sourcefile.c编译并且汇编该代码,产生.o的二进制目标文件
gcc –Og sourcefile.c使用编译优化级别1编译程序。g级别为1~3,级别越大优化效果越好,但编译时间越长.
Gcc –E sourcefile.c –o sourcefile.i将sourcefile文件预处理生成的文件输出到sourcefile.i文件中
二、扩展:
gcc对部分文件的后缀约定规则:.c为后缀的文件,C语言源代码文件;
.a为后缀的文件,是由目标文件构成的档案库文件;
.C,.cc或.cxx 为后缀的文件,是C++源代码文件;
.h为后缀的文件,是程序所包含的头文件;
.i 为后缀的文件,是已经预处理过的C源代码文件;
.ii为后缀的文件,是已经预处理过的C++源代码文件;
.m为后缀的文件,是Objective-C源代码文件;
.o为后缀的文件,是编译后的目标文件;
.s为后缀的文件,是汇编语言源代码文件;
.S为后缀的文件,是经过预编译的汇编语言源代码。
要查看机器代码文件,需要使用到反汇编器(disassembler)的程序。这些程序根据机器代码产生一种类似汇编代码的格式。在linux系统中,带‘-d’命令行标志着程序OBJDUMP可以充当这个角色。
(这里 由于objdump -d hello.c执行之后反汇编代码会直接显示在屏幕终端上,所以我们将这些内容进行重定向,保存在一个.ds(写者自定义的,便于区别))文件里
cat hello.ds
部分内容显示如下
更多参数参见man gcc