c语言源程序是怎么编译
【答案】:C
编译程序工作过程一般划分为五个阶段:词法分析、语法分析、语义分析、优化、目标代码生成。( 1 )词法分析:也就是从左到右一个一个读入源程序,识别一个单词或符号,并进行归类。( 2 )语法分析: 在词法分析基础上,将单词序列分解成各类语法短语,如“程序”,“语句”,“表达式”等。( 3 )语义分析:审查源程序是否有语义错误,当不符合语言规范时候,程序就会报错。( 5 )代码优化:这个阶段是对前阶段中间代码进行变换或改造,目是使生成目标代码更为高效,即节省时间和空间。 ( 6 )目标代码生成:也就是把优化后中间代码变换成指令代码或汇编代码。 词法分析和语法分析本质上都是对源程序结构进行分析。
⑵ 编写好c语言源程序后如何进行编译和运行
编写好C语言源程序后,需要按照以下步骤进行编译和运行:
1. 保存源代码文件,确保文件扩展名为“.c”。
2. 使用C语言编译器将源代码文件编译成目标文件。在命令行中输入“gcc 源文件名.c -o 目标文件名”即可进行编译。如果编译成功,将生成一个目标文件。
3. 将目标文件链接成可执行文件。在命令行中输入“gcc 目标文件名.o -o 执行文件名”即可进行链接。如桐弊陵果链接成功卜败,将生成一个可执行文件。
4. 运行可执行文件。在命令行中输入“./执行文件名”即可运行程序。如果一切正常,程序将输出预期的结果。
需要注意的是,编译和运行C语言程序需要相应的环境配置,包括C语言编译器和操作系统等。此外,不同的操作系统和编译器可能具有不同的命令行语法和选项,因此需要根据实际情况进行调局戚整。
⑶ C语言源程序到运行程序经过哪几个步骤
1、预处理
在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。
根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。
GCC预处理阶段可以生成.i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o hello.i hello.c
2、编译
这一阶段,编译器对源码进行词法分析、语法分析、优化等操作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。
可以通过选项-S使GCC在进行完编译后停止,生成.s的汇编程序。例如:gcc -S -o hello.s hello.c
3、汇编
这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为.o的目标文件中。
当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成.o目标文件后,才能进入下一步的链接工作。
目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o hello.o hello.c
4、链接
经过汇编以后的机器代码还不能直接运行。为了使操作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello hello.c
5、运行:执行.EXE文件,得到运行结果。
⑷ C语言源程序的编译过程包括哪三个阶段
编译:将源程序转换为扩展名为.obj的二进制代码
连接:将obj文件进行连接,加入库函数等生成可执行文件
运行:执行可执行文件,有错返回修改,无错结束