一.关于c语言的理解
从hello.c了解C程序
#include<stdio.h>
int main()
{
printf("Hello world!");
return 0;
}
1.#include<>表示包含的意思,意思是把里面的东西写到程序中来
2.stdio.h–叫头文件,我们在使用变量或者函数时都需要进行定义和声明。我们能够直接使用一些基本的数据类型和函数,是因为stdoi.h里面就包含了int long 等等数据类型,printf(),scanf()等等函数的定义声明。
3.int main()=int main(void),表示不带参数,有返回值。
4.void main()没有返回值。
二。程序的编译过程
这里主要讲linux下的GCC的C程序的编译过程。
程序的编译主要分为4个过程(预处理、编译、汇编 和链接)。
1.后缀文件
.c是C语言源程序
.a是由目标文件构成的档案库文件
.i是经过预处理的C文件
.o是经过编译的目标文件
.s是汇编文件
2.预处理
用gcc -E hello.c -o hello.i 命令输出经过预处理后的文件,用vi hello.i打开,如图(只有部分)可见stdio.h的内容被包含了进来
3.编译–就是要把预处理的程序生成汇编程序。我们用高级语言写程序,是为了方便移植,但我们在编译的时候还是要转换为汇编,然后再转为计算机语言。用gcc -S hello.i -o hello.s输出汇编文件。vi hello.s打开(部分),显然程序被转换为汇编程序。
4.汇编–把汇编文件生产目标文件。gcc -c hello.s -o hello.o
5.连接–把目标文件与库文件相连生成可执行文件。库文件就是一些已经写好的函数的实现方法。比如printf()函数。gcc hello.o -o hello
6.然后执行就可以了,编译的过程大概就这样。