① 用高级语言编写的源程序必须经过编译,产生目标程序后才能运行,这句话对吗为什么
目标程序不能运行,必须再经过连接成可执行文件才能运行。
而且像java 和c#的程序编译后也不是目标程序。
② 一个源程序如果不能编译,能否直接运行,为什么
一个源程序如果不编译是不能运行的,就算编译过了也不一定能运行。一个源程序必须经过编译生成后缀为.obj目标程序,然后连接生成后缀为.exe的可执行文件方能运行。如果编译没有问题,只是说明没有语法错误,但可能会存在一些逻辑错误导致程序不能运行,所以说,编译过了也不一定能运行。
③ c语言中的源程序必须经过编译连接生成可执行程序才能运行,这句话是对不对
哥们,这么理解是对的,不过感觉有点表面。
建议看看计算机一些原理,像你说的这个问题我会想到,计算机最终只能识别二进制码,
所以其实不管我们一切啥语言,最终都是通过编译器编译成二进制码,计算机才能识别
而去运行,而c语言编写的程序,肯定是要经过一系列的编译,链接,生成可执行的文件。
在windows系统中,执行文件都是.exe为扩展名的。不过在linux系统中就不一样了,linux
系统并不区分扩展名,所以也就无所谓什么.exe之类的文件,只要知道最终生成可执行的
二进制文件就可以了。
④ C语言的源程序必须通过什么和什么才能被计算机执行
编译和链接。
每一个C语言程序必须要经过编译和链接才能被计算机执行,编译是将C源码翻译成机器码,链接是将将二进制目标文件装配成一个具有特定格式的二进制可执行文件,比如Windows平台上是PE格式,一般以.exe为扩展名。
一个C语言程序从源码到计算机系统可以执行,更细致的划分为:预处理——编译——汇编——链接。预处理是对C语言源码进行文本处理,编译阶断是将C源码经C编译器生成汇编代码,汇编阶断是将汇编代码经汇编器生成二进制机器码文件。这两个合拢起来,笼统的可以叫做编译阶断。
⑤ 所有的 .NET 应用程序都要经过几次编译第一次编译的结果是什么
.NET Framework,其实就是一个运行在操作系统Windows之上的软件虚拟机。使用VS .NET开发出来的程序经过编译之后,生成的可执行程序实际上包含的只是MSIL指令代码,这是一种托管代码,只能运行在.NET虚拟机之上。所以,如果某台计算机上没有安装.NET Framework,就意味着图1-50中的“虚拟机”一层不存在,.NET应用程序就无法执行。对于非Windows的操作系统,只要上面有.NET虚拟机,就可以运行.NET程序,不需要重新修改源程序并重新编译。
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
⑥ 用c语言编写的源程序需要用编译程序先编译成由机器语言组成的目标程序,在经过( )后才能得到可执行程序
源代码需经过编译和链接,才可生成可执行文件。
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有许多没有解决的问题。 例如,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等);在程序中可能调用了某个库文件中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
根据开发人员指定的同库函数的链接方式的不同,链接处理可分为两种:
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2) 动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
对于可执行文件中的函数调用,可分别采用动态链接或静态链接的方法。使用动态链接能够使最终的可执行文件比较短小,并且当共享对象被多个进程使用时能节约一些内存,因为在内存中只需要保存一份此共享对象的代码。但并不是使用动态链接就一定比使用静态链接要优越。在某些情况下动态链接可能带来一些性能上损害。
⑦ 用高级语言编写的程序必须经过( )翻译成机器语言程序,计算机才能执行。急急急急!
编译程序。
编译程序的最终目标是将源程序编译成目标程序。编译程序是把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。
编译程序属于采用生成性实现途径实现的翻译程序,以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
(7)任何程序都须经过编译扩展阅读:
注意事项:
不要只为了解决问题而随意把代码都写在Main()函数里。
一个函数应该只解决一个功能或问题。
单个函数的代码行数最好不要超过20行。
要给每一个函数起一个好名称,做到见名知义的程度方便对程序整体的快速理解。
要给函数作注意语句,写代码不只是给用户看的,一个好的代码也应该让别人能容易理解。
⑧ 为什么要编译
在汇编语言之后,上世纪50年代,科学家有发明了好几种用人类语言书写程序的方法,被称为计算机高级语言。如PASCAL语言、BASIC语言、C语言等。高级语言源程序都可以用记事本(Notepad)打开和编辑。高级语言源程序也要经过翻译才能被计算机接受。把高级语言翻译成机器语言的方法大体有两种,一种被称作“解释”,如GWBASIC、BASIC、QBASIC等语言,这种方式下,源程序被翻译出一个完整的操作步骤,计算机就作出相应反应,执行一步,再翻译再执行,逐步达到源程序制定目标。另一种方式被称作“编译”,如PASCAL语言和C语言等,这种方式下,计算机把源程序全部翻译成它自身能读懂的、被称作目标程序的机器语言程序,然后再一次执行。二者的区别在于编译程序能产生目标程序而解释程序则不能产生目标程序。用高级程序设计语言编写的程序,要转换成等价的可执行程序,必须经过编译和连接。同样一段高级语言程序通过不同的编译器可能产生不同的可执行程序。计算机不能直接执行符号化的程序,而是通过汇编程序、解释程序和编译程序而将符号程序转换为可执行程序。高级语言需要编译成目标代码或通过解释器解释后才能被CPU执行。