GCC编译器能将C、c++和汇编程序编译、链接成可执行文件。
GCC通过后缀来区别输入文件类别:(列举常用几个后缀文件)
.c C语言源代码文件
.a 由目标文件构成的库文件
.C,.cc或.cpp C++源代码文件
.h 头文件
.o 编译后的目标文件
.s 汇编语言源代码文件
.S 经过预编译的汇编语言源代码文件
GCC基本使用格式:gcc [options] [filenames]
常用options:
-c只对源文件进行编译,不链接生成可执行文件。
从运行图中第一列权限中可以看出,有gcc -c 编译出的文件hello.o是不可执行的文件。那么-c 有什么用呢?
当一个工程由多个.c文件生成可执行文件时。。。
如 fun.c 中调用fun1.c和fun2.c 就可以酱紫啦:
然后
结果
可是当源文件有七八个。。。要是这样一个个编译,其中一个文件变化后工程是很巨大的啊,
表担心,makefile指令可是相当强大,继续努力!!!
-o生成最终的可执行文件。假设源文件为hello.c,若忽略该项文件名,生成的可执行文件名默认为a.out,目标文件为hello.o
从上图可以看出有-o编译生成可执行文件hello【右边权限列x代表可执行】
有结果啦。。。
-g在可执行文件中加入调试信息,方便进行程序的调试。
-g有啥用啊?表急,从上图看出什么东东了嘛
第五列是文件的大小,因为-g指令在可执行文件中红加入了调试信息,所以hello_g文件是要比hello文件大滴。-g生成的可执行文件可是很有用的,在使用gdb进行调试的的时候这一步是必须。