Linux C编程学习

C语言简介

简介

  C语言具有控制特性较强、高效性、可移植性和强大的功能和灵活性。"自由的代价是永远的警惕",C的简洁性与其丰富的运算符相结合,使其可能会编写出较难理解的代码。面向对象编程是一种哲学思想,它试图让语言来适应问题,而不是让问题适应语言。C是一种面向过程或者面向函数的编程,而c++是面向对象编程的一门C的超集。

C语言运行机制

C语言编程的基本策略是使用程序将源代码转换为可执行文件,此文件包含可以运行的机器语言代码。C实现这个目标主要通过两个步骤实现:编译和链接。编译器将源代码转换为中间代码,而链接器将中间代码与其他代码相结合来生成可执行文件。中间文件一般大多数是指目标文件,是将源代码转换为机器语言代码,将结果放置在目标文件中。但该目标文件不能运行,因为该文件包含源代码的转换结果,并不是一个完整的一个程序。目标代码缺少两部分内容:启动代码(start-up code)和库例程的代码

启动代码:相当于程序和os之间的接口。如果DOS和Linux PC硬件相同,那么他们会使用同样的目标代码。(硬件相同那么他们的机器语言指令集相同,所以会产生同样的目标代码)他们要使用不同的启动代码,因为这两种系统处理程序的方式不同。但是硬件相同,目标文件产生的机器语言都被这两种机器执行。

库例程的代码:C语言的一些库程序。例如:"stdio.h"

链接器的作用:将目标文件、启动代码和库例程的代码结合在一块,并将它们存放在一个文件中即可执行文件。

目标文件和可执行文件都是有机器语言指令组成的。

如图所示:

技术分享例如:

  创建test.c源代码,源代码如图所示:

  技术分享

然后通过gcc编译生成可执行文件

技术分享

编译器通过检查命令行中指定的文件的后缀名可识别其为 C 源代码文件。GCC 默认的动作:编译源代码文件生成对象文件(object file),链接对象文件得到可执行程序,删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。

注:查看详细的编译c源代码的整个过程。定点击我

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。