当前位置:首页 » 编程软件 » 什么叫编译器没有提供二进制目录

什么叫编译器没有提供二进制目录

发布时间: 2023-10-01 14:52:38

① C语言编译后显示没有这样的文件或目录是什么意思

最好上个截图,应该是库文件的路径设置不对。通常在集成环境的选项中有连接文件库的路径设置。

② 请问编译程序和解释程序是什么意思什么是编译器、什么是解释器

编译和解释是从源程序到可执行程序转换的两种方法。编译,是在源程序完成后,先转换成中间代码,然后再转换成二进制代码,完成后,每次执行,都直接执行这个二进制代码。一次转换完成。
而解释程序的执行不同,他在执行时,是一次读入一条源代码,然后分析转换成二进制代码,执行这条语句,然后再读入一条源代码,再转换,再执行。是一边转换一边执行。编译器和解释器就是完成编译和解释工作的一个软件。

③ 什么是编译器

编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源程序一般为高级语言(High-level language),如Pascal,C++等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

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

工作原理
翻译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器言)。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。

编译器种类
编译器可以生成用来在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码,这种编译器又叫做“本地”编译器。另外,编译器也可以生成用来在其它平台上运行的目标代码,这种编译器又叫做交叉编译器。交叉编译器在生成新的硬件平台时非常有用。“源码到源码编译器”是指用一种高级语言作为输入,输出也是高级语言的编译器。例如: 自动并行化编译器经常采用一种高级语言作为输入,转换其中的代码,并用并行代码注释对它进行注释(如OpenMP)或者用语言构造进行注释(如FORTRAN的DOALL指令)。

预处理器(preprocessor)
作用是通过代入预定义等程序段将源程序补充完整。

编译器前端(frontend)
前端主要负责解析(parse)输入的源程序,由词法分析器和语法分析器协同工作。词法分析器负责把源程序中的‘单词’(Token)找出来,语法分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句 ,函数等等。
例如“a = b + c;”前端词法分析器看到的是“a, =, b , +, c;”,语法分析器按定义的语法,先把他们组装成表达式“b + c”,再组装成“a = b + c”的语句。
前端还负责语义(semantic checking)的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。最终的结果常常是一个抽象的语法树(abstract syntax tree,或 AST),这样后端可以在次基础上进一步优化,处理。

编译器后端(backend)
编译器后端主要负责分析,优化中间代码(Intermediate representation)以及生成机器代码(Code Generation)。

一般说来所有的编译器分析,优化,变型都可以分成两大类: 函数内(intraproceral)还是函数之间(interproceral)进行。很明显,函数间的分析,优化更准确,但需要更长的时间来完成。

编译器分析(compiler analysis)的对象是前端生成并传递过来的中间代码,现代的优化型编译器(optimizing compiler)常常用好几种层次的中间代码来表示程序,高层的中间代码(high level IR)接近输入的源程序的格式,与输入语言相关(language dependent),包含更多的全局性的信息,和源程序的结构;中层的中间代码(middle level IR)与输入语言无关,低层的中间代码(Low level IR)与机器语言类似。 不同的分析,优化发生在最适合的那一层中间代码上。

常见的编译分析有函数调用树(call tree),控制流程图(Control flow graph),以及在此基础上的 变量定义-使用,使用-定义链(define-use/use-define or u-d/d-u chain),变量别名分析(alias analysis),指针分析(pointer analysis),数据依赖分析(data dependence analysis)等等。

上述的程序分析结果是编译器优化(compiler optimization)和程序变形(compiler transformation)的前提条件。常见的优化和变新有:函数内嵌(inlining),无用代码删除(Dead code elimination),标准化循环结构(loop normalization),循环体展开(loop unrolling),循环体合并,分裂(loop fusion,loop fission),数组填充(array padding),等等。 优化和变形的目的是减少代码的长度,提高内存(memory),缓存(cache)的使用率,减少读写磁盘,访问网络数据的频率。更高级的优化甚至可以把序列化的代码(serial code)变成并行运算,多线程的代码(parallelized,multi-threaded code)。

机器代码的生成是优化变型后的中间代码转换成机器指令的过程。现代编译器主要采用生成汇编代码(assembly code)的策略,而不直接生成二进制的目标代码(binary object code)。即使在代码生成阶段,高级编译器仍然要做很多分析,优化,变形的工作。例如如何分配寄存器(register allocatioin),如何选择合适的机器指令(instruction selection),如何合并几句代码成一句等等。

④ 刚下的DEV C++,如何解决:在编译器设置 "TDM-GCC 4.8.1 32-bit Release" 中没有提供二进制目录。中止编译

在C盘中找到以自己命名的文件夹(用户文件夹里找),打开隐藏文件,出现AppData文件夹,删除devc++就好。亲试,这种问题绝对管用!

⑤ 什么是编译程序

编译程序指将某一种程序设计语言写的程序翻译成等价的另一种语言的程序的程序, 称之为编译程序

编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。

它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

编译程序的实现算法较为复杂,这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系,同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。

由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。

(5)什么叫编译器没有提供二进制目录扩展阅读:

编译流程分为了四个步骤:

1.预处理,生成预编译文件(.文件)

2.编译,生成汇编代码(.s文件)

3.汇编,生成目标文件(.o文件)

4.链接,生成可执行文件

⑥ 用Dev-C++中编译时就出现“在编译器设置 "New compiler" 中没有提供二进制

应该是没有正确配置MinGW GCC工具集,有两个版本的Dev-C++安装包,一个是自带并配置好GCC的,另一个只是IDE没有编译器工具集,后者需要手工在Dev-C++的目录下建立MinGW32或/和MinGW64目录,然后把另外下载的MinGW放进去,根据32bit/64bit不同的版本,然后在Dev-C++里编译器配置里点自动寻找编译器,它才能自动发现并配置好

⑦ jsp预编译问题

这个方法是到目前为止进行JSP预编译最方便的途径( flick a switch 途径) 他有许多指出来毫无意义的缺点 如果一个错误在JSP的编译期间或在部署(或重新部署) 的时候发生 Web 应用程序的预编译将会在例外处暂停 另外 如果在一个特定的Web应用程序里面有许多JSP文件的情况 declarative预编译显着的影响着部署时间 阻断部署直到所有的文件都被编译 对于大型的应用程序 当出现数以百计的JSP 文件以declarative预编译被执行的时候 这种部署时间趋向以分钟来计算 (在某些情况 到 分钟 其他情况可能更长时间) 设想开始一个服务器实例 在一个特定的Web应用程序周期内进入部署状态用declarative 预编译激活李模坦 如果在应用内有很多的JSP文件以及部署 接近完成时就已经花费了大量的时间 在编译期间由于抛出一个例外而突然失败 当然会引起挫折感 虽然起先看起来比较方便 但declarative 编译对生产系统管理造成重大的风险 因此应该在经过慎重的考虑后再使用它

程序方式的预编译

在WLS下最可靠的预编译JSP的方法是使用java命令行 weblogic jspc 它位于WLS安装的lib目录之下的weblogic jar文件中 这个工具允许开发者在发展阶段和在部署前解决编译时间问题的时候编译需要的JSP文件 它也为生产系统提供一个有能力实现JSP预编译的管理员 这种用法的主要好处是

● 文件可以被预编译一次然后可以被多次部署 (这不被服务器实例的重复利用所影响)

● 编译时的例外可以被预先解决而不影响部署

● 类可以通过集群部署

使用weblogic jspc的缺点是需要人工干涉 并且它在开发时并当在JSP文件变得过时的时候必须被重新运行 然而 考虑到前面的两个方法的讨论 我们几乎不能将这种不方便当成该方法的一个缺点 因此推荐它作为码数最可靠和最灵活的机制来实现JSP预编译

执行weblogic jspc

为了更有效的使用weblogic jspc 你必须首先了解它的用法和语法 这篇文章我们将利用WLS SP 的工具的功能 注意 下面给出的语法和最好的惯例应该应用于WLS 的所有版本以及新的WLS

为了调用命令行JSP编译器(weblogic jspc) 你必须确定下面的内容

● PATH环境变量必须包含你机器上安装的J SE 包的二进制目录(例如 /opt/j se/ /sdk/bin 或者c:sunsoftj se sdkin) 以获得JVM运行时的支持 如果你打算使用javac作为你的JSP编译的Java编译器 要确定PATH包含全部Java 的软件开发工具包(SDK)的二进制目录 并且不仅仅是JRE(Java Runtime Engine Java运行时间引擎) 因为没有编译器和JRE关联 如果你打算使用一个编译器而不是javac(例如 Jikes) 也要为那个编译器确定在PATH中包含正确的目录

● 设置Java系统类路径用来包含来自WLS SP 安装目录的weblogic jar文件 通过在产品库目录下默认建立(例如 /opt/bea/wlserver /lib/weblogic jar或者c:eawlserv er libweblogic jar) 此外 请确定在JSP编译阶段中你可哪桐能需要的参考类(JAR或类文件)也在你的类路径中

在第一次执行weblogic jspc之前 你需要测试你的命令行配置是否是按上述配置 它可以通过简单运行一个WLS版本检查来完成 使用命令 java weblogic version 这个命令应该返回下面的内容

which should return the following:

WebLogic Server SP / / : :

#

WebLogic XML Mole SP / /

: : #

如果你的输出和上面的不相似(和你运行的版本相对应) 在进行JSP预编译前 要重新访问PATH和类路径变量将其设置成你的当前命令行环境

一般的weblogic jspc的语法如下面给出的

java weblogic jspc [options] …

在一个编译器的单一调用中默认情况下JSP编译器可以编译一个JSP文件或一组JSP文件 并且可以通过设置命令行选项 编译器可以以不同的方法工作 下面给出一个例子

java

weblogic jspc

webapp mywebapp

piler javac

pileFlags g

classpath /u/apps/dist/src/lib jar

d

package slackwerks mywebapp jsp

mentary

keepgenerated

k

mywebappindex jsp

这篇文章只列举了一个例子 如果你要想更加了解weblogic jspc如何能在你的环境中使用和管理的话 请参阅/wldj 我们提供了对整套的工作选项 使用的含义以及相关联问题的讨论

结论

lishixin/Article/program/Java/hx/201311/25749

热点内容
mp4反编译软件 发布:2024-10-25 16:47:33 浏览:998
哪个是提升电脑帧数的配置 发布:2024-10-25 16:43:45 浏览:95
以一种访问权限不允许的方式 发布:2024-10-25 16:38:32 浏览:404
嵌入式linux开发环境搭建 发布:2024-10-25 16:26:51 浏览:325
奥迪a4l乞丐版什么配置 发布:2024-10-25 16:20:33 浏览:411
python读取txt文件数据 发布:2024-10-25 16:07:36 浏览:23
获取局域网服务器的真实ip 发布:2024-10-25 16:01:36 浏览:28
多线程程序java 发布:2024-10-25 15:58:32 浏览:228
安卓最大的图片是哪个 发布:2024-10-25 15:55:06 浏览:467
云服务器登录小号 发布:2024-10-25 15:41:34 浏览:402