❶ C 程序源代码每次运行都要编译连接才行吗
不用,只要没有修改,一次编译连接后,可直接运行生成的exe文件即可
如果修改过了,那么就只能重新编译连接了
❷ 为什么要对C源程序进行编译、链接
首先要说的是C语言属于高级语言,不能直接被计算机识别而执行,所以需要一些操作来转化。。一开始是编译预处理,对宏,包含指令,编译指令等进行处理,然后是词法语法分析,将源代码翻译成中间代码(一般是汇编),接着优化代码,,然后将中间代码翻译成机器语言(目标文件),机器语言是计算机的基层语言,能被计算机直接识别。。接着链接目标文件,生成可以执行文件。。。大概就是这样。。详细的LZ可看这个总结。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html
❸ c语言写完代码后怎么运行
在C语言写完代码后,需要通过编译器将源代码编译成可执行文件,然后在相应的操作系统中运行这个可执行文件。
C语言是一种需要编译的编程语言,它的源代码需要被转换成机器码才能在计算机上执行。这个过程通常分为两个步骤:编译和链接。
1. 编译:编译器将C语言源代码(.c文件)转换成目标文件(通常是.o文件或.obj文件),这个文件包含了源代码转换成的机器码,但是还不能直接执行,因为它可能还依赖于其他目标文件或库。在这个阶段,编译器还会检查源代码中的语法错误。
2. 链接:链接器将一个或多个目标文件以及可能需要的库文件合并成一个可执行文件(在Windows系统中通常是.exe文件,在Unix/Linux系统中没有特定的扩展名)。这个可执行文件包含了程序运行所需的所有机器码和其他资源。
例如,如果你在Linux系统中使用GCC编译器,你可以通过以下命令来编译和运行C语言程序:
bash
gcc -o hello_world hello_world.c # 编译
./hello_world # 运行
这里,“gcc”是GNU编译器集合中的C语言编译器,“-o hello_world”指定输出文件名为“hello_world”(在Linux中,如果不指定输出文件名,GCC会默认生成一个名为“a.out”的可执行文件),“hello_world.c”是源代码文件。运行可执行文件时,需要在前面加上“./”来表示当前目录。
如果你在Windows系统中使用Visual Studio等集成开发环境(IDE),编译和运行的过程通常会被IDE自动化。你只需要点击“运行”或“调试”按钮,IDE就会自动完成编译、链接和运行的过程。
请注意,虽然这里只介绍了最基本的编译和运行过程,但实际的软件开发中可能还需要考虑很多其他因素,比如编译器选项、多文件编译、库的使用、错误处理和调试等。
❹ 用高级语言编写的源程序必须经过__ ___转化为等价的二进制代码程序,才能够在计算机中运行。
编译和链接。
编译:
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
(4)源代码必须经过编译和链接扩展阅读
源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。
词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。
❺ 用c语言编写的源程序需要用编译程序先编译成由机器语言组成的目标程序,在经过( )后才能得到可执行程序
源代码需经过编译和链接,才可生成可执行文件。
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。 例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2) 动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。