当前位置:首页 » 编程语言 » c语言链接器
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言链接器

发布时间: 2023-02-19 12:17:40

A. c语言源程序开发的第一步是什么

第一步

在程序编辑过程中,所输入源文件中的是一些字符码,但是机器能够直接处理的是0、1信息。为此,首先要将源程序文件翻译成0、1码所表示的信息,应用相应的文件保存。这种保存0、1码的文件称为目标程序文件。由源程序翻译成目标程序的过程称为编译。

在编译过程中,还要对源程序中的语法和逻辑结构进行检查。编译任务是由称为编译器的软件完成的。目标程序文件尚且不能执行,它们只是一些目标程序模块。

第二步

将目标程序模块以及程序所需的系统固有目标程序模块(如执行输入、输出操作的模块)链接成一个完成的程序。经正确链接所生成的文件才是可执行文件。完成链接过程的软件称为链接器。

第三步

C语言中的运算符种类很多,正确的使用这些运算符,有以下三点需要注意。

1.含义

要注意区分一个运算符符号在C语言程序中和在普通数学表达式中的意义的不同,如“=”。

2.优先级

在一个表达式中存在多个运算符时候,进行运算的先后顺序。

3.结合性

即在一个表达式中存在多个优先级别相同的运算符时,先进行哪个运算符的运算。

第四步

标识符也称为名字,如变量名、函数名、文件名等。在C语言程序中,所使用的标识符应当符合以下词法规则。

(1).标识符是大/小写字母、数字和下划线所组成的序列,但不能以数字开头。

(2)C语言区分同一字母的大/小写,如abc和abC就是不同的标识符。

(3)C89要求编译器所能识别的标识符长度不多于31个有效字符。C99要求编译器所能识别的标识符长度不多于63个有效字符。

(4)普通标识符不能使用对于系统有特殊意义的名字,如类型名、语句名等。这些对系统具有特殊意义的名字称为关键字。

B. C语言源程序文件经过编译连接之后生成一个后缀为_____的文件。

如果只生成一个文件,那么这个题目答案是B。编译(compile)后生成目标文件,后缀:.obj。也就是机器码。

然后链接器(Linker) 连接生成可执行文件,后缀:.exe。最后运行命令(go),直接运行.exe文件。

(2)c语言链接器扩展阅读:

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。

一个现代编译器的主要工作流程:源代码(source code) →预处理器(preprocessor) →编译器(compiler) →目标代码(object code) →链接器(Linker) → 可执行程序(executables)

高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。

编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。

源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言。

而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。

对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。

最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

C. 在c语言中“可执行程序”是什么意思

C语言中的可执行程序就是将用文本信息表示的程序翻译成计算机认识的二进制代码串。

首先,我们先用C语言把源代码写好,然后交给C语言编译器。C语言编译器内部分为前端和后端。

(1)编译器前端

前端负责将C语言代码进行词法和语法上的解析,然后可以生成中间代码。

中间代码这部分不是必须的,但是它能够为程序的跨平台移植带来诸多好处。比如,同样的一份C语言源代码在一台计算机上编译完之后,生成一套中间代码。

然后针对不同的目标平台(比如要将这一套代码分别编译成 ARM 处理器的二进制机器码、MIPS 处理器的二进制机器码以及 x86 处理器的二进制机器码),只需要编写相应目标平台的编译器后端即可。

所以,这么做就可以把编译器的前端与后端剥离开来(这在软件工程上又可称为解耦合),不同处理器厂商可以针对自家的处理器特性,对中间代码生成到目标二进制代码的过程再度进行优化。

(2)编译器后端

接下来,由C语言编译器后端生成源文件相应的目标文件。

目标文件在 Windows 系统上往往是.obj文件,而在 Unix/Linux 系统上往往是.o文件,C语言的源文件在所有平台上都统一用.c文件表示。

(3)链接器

最后,对于各个独立的目标文件,通过连接器将它们合并成一个最终可执行文件。

(3)c语言链接器扩展阅读:

起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。

这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。

K&R C主要介绍了以下特色:

结构体(struct)类型

长整数(long int)类型

无符号整数(unsigned int)类型

把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。

即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。

1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。

1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。

1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSI X3.159-1989 "Programming Language C"。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSI C,因为这个标准是美国国家标准协会(ANSI)发布的。

1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC 9899:1990 - Programming languages -- C 。因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。

1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC 9899:1990/Cor 1:1994 ,有些人简称为C94标准。

1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity ,有些人简称为C95标准。

C99标准

1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,名叫ISO/IEC 9899:1999 - Programming languages -- C ,简称C99标准。这是C语言的第二个官方标准。

参考资料:网络-c语言