C语言强大又灵活,它给你最大自由,让你用C语言去直接控制你的硬件资源,记住想拥有自由就必须时刻保持警惕。C的精神告诉你,它相信你(程序员)能够控制好,能够组织好,它不会在语言层面设置障碍去阻止你做任何事,它时刻保持语言的精练、简单,高效。
所以你负有责任去管理你的程序过程。C语言是面向过程的,它的程序设计基本是这样的:
- 做什么,即想用C语言来做些什么,如做个时钟、实现一个排序算法等等,就是目标
- 如何做,就是要完成这个目标,要如何做,这里就会第一步做什么,第二步做什么等等,必想把每个过程要做什么都要想清楚确定下来。
- 编码,根据第二步确定的过程,用编码实现出来
- 编译,写完成代码就要把它编译,并生成可执行文件
- 运行
- 测试或调试
编译+链接 = 可执行文件
编译器把源文件(扩展名为.c的文件)编译出中间代码(中间代码有很多种形式,如.s编译代码、.o目标代码),链接器再将其与其他代码连接在一起生成可执行文件。
.o目标文件只包含编译源文件后的机器语言代码,不包含标准库函数的代码(库文件中有许多函数的目标代码),它不能直接运行,因为它缺失启动代码,启动代码充当程序与操作系统之间的接口。不同平台(linux、unix、windows)所需的启动代码也不相同。
链接器的作用就是将编译源文件得到的.o目标文件与标准启动代码和库代码合并成一个可执行文件。对于库代码,链接器只是把要用到的函数代码提取出来。可执行文件中包含程序的机器代码和使用到的库函数和启动代码。