导航:首页 > 源码编译 > 编译器自动侦测

编译器自动侦测

发布时间:2022-05-26 18:23:21

A. C++中vs能不能自动检测到需要的头文件

据我所知没有 编译器没有自动添加头文件的功能
你这里是不是应该是 #include <string>啊?
很高兴和你一起讨论和学习C++

B. qt ctreator怎么 无法自动检测出 vs2015编译器

vs中c和c++的编译器是同一个,vs会自动根据扩展名、代码自动调用不同的编译参数来对代码进行编译。

C. qt creator 自动检测 没有

1、Linux下Qt Creator的配置

从Dash中找到Qt
Creator,打开,打开后可以看到主界面,这个界面和Windows下基本一致(后面安装windows版本就清楚了),在前面的两篇文章中我已经分
别编译了Linux下的X86平台和ARM平台的QT库,这部分就针对这个IDE进行相应的配置,是能够进行应用程序的开发。

在主界面中从菜单栏点击"工具"->"选项"->在左侧点击“构建和运行”界面如下图所示。


图中可以看到,IDE并没有自动识别安装的QT,这是因为在缺乏系统环境变量的情况下,不知道程序安装到了什么地方,所以这里需要手动设置,手动设置很简
单,只需要点击添加,分别添加编译的两个版本的QT安装文件中的qmake文件即可,注意是安装文件,并不是之前解压的源文件。

默认的安装路径为/usr/local/Trolltech这个文件夹下有两个文件夹,具体路径可以参见上图。

到这里就告诉IDE 安装QT的位置了,由于需要进行编译开发,接下来还需要指定编译器,点击“编译器”选项卡,如下图所示。

如图中所示,Qt Creator已经检测到X86的GCC,而我们要是做arm平台开发的话还需要指定用于arm开发的交叉工具链,我的安装路径为/usr/local/arm/4.3.2/bin/需要指定g++文件,如图中所示。配置完成后,点击“应用”。

QT和编译器指定完成后就需要进行下一步配置了,就是对这些工具进行组合,点击“构建套件(kit)”选项卡,如下图所示。

如上图所示,这里所做的设置也很简单,相当于是设定几种方案,指定设备类型、所用的编译器版本以及QT版本,我这里配置桌面和ARM两项,分别对应在PC和开发板两个平台。

到这里,基本配置就完成了。

2、使用Qt Creator进行初步开发

下面新建一个项目,点击菜单 ”文件“->”新建“,如下图所示,选择应用程序-Qt Gui应用


下来填写项目名称和选择保存位置,点击”下一步“选择构建套件,这里用于选择使用的构建套件,即上文配置的,按照上文配置我这里就有两个套件,桌面和
ARM,这个地方后面是可以更改的,因此我这里还是先选择桌面,下面有对应的Debug与Release这里保持默认。接下来全部保持默认一直到完成。

工程新建完成后就可以看到工程目录即文件了,如下图所示。


一个例程就不添加啥程序了,充分利用IDE设计的方便之处,拖拽几个控件运行示意一下吧,双击上图中的界面文件下的mianwindow.ui文件,接下
来就能看到和VS下利用C#等开发非常类似的界面,可以从左侧选择一些控件,右下角可以针对具体的控件属性进行修改,如下图所示,拖出自己需要的控件,并
进行简单修改。

我这里拖了几个作为示意,这部分弄好后,点击左下角的

直接运行,构建完成后就会弹出刚刚设计的界面,如下图所示。


以看到实际运行效果和编辑的情况由于字体等因素略有差异。接下来就要生成一个能够在开发板上运行的程序了,由于刚刚在新建项目的时候构建套件选择的是桌
面,所以首先要对这点进行更改。如下图所示,点击
”项目“--”添加构建套件“下方就会弹出我刚刚设定的ARM,在arm的构建设置中可以使用默认配置,其他相关选项可以参考桌面选项更改。


要说明的是在ARM的运行项目中,需要部署到远程运行,这里没有部署,因此在剪辑编辑进行构建的时候,就不能改直接运行了,点击锤子图标,进行构建,构建
完成后可以在工程文件夹下,如下图所示,那么在ARM开发板上运行的程序就在test1-build-ARM-_____Debug文件夹下。

接下来把生成的可执行文件拷贝到开发板进行运行,我这里使用的是nfs挂载的方式,通过超级终端运行

./test1 –qws

运行程序,需要说明的是我使用的开发板是飞凌的OK6410,上面已经移植好了QTE 4.7.3,虽然我的版本是4.8.4但是运行没有问题,其他平台需要先移植QT,这个暂时不在本文的讨论范围之内,运行效果如下:

到这里,用于开发板运行的第一个小程序就跑起来了。

3、Windows下Qt的安装

Linux下的安装和配置搞定了,Windows下的就非常简单了,Windows下有针对VS2008/2010以及Mingw的版本,虽然我电脑里装了VS2010,这里还是决定安装Mingw的版本,首先下载相关文件,下载地址:

http://qt-project.org/downloads

需要说明的是,早期有SDK安装包的,现在都是单独的了,所以需要分别下载

qt-win-opensource-4.8.4-mingw.exe

qt-creator-windows-opensource-2.6.1.exe

MinGW-gcc440_1.zip 下载地址http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip

如果想在VS中使用可以下载

qt-vs-addin-1.1.11.exe

qt-win-opensource-4.8.4-vs2010.exe

由于Mingw并没有被qt-win-opensource-4.8.4-mingw.exe安装包集成,所以需要先安装mingw,安装很简单,直接解压到指定的目录就行,我的路径d:/mingw。

接下来安装qt-win-opensource-4.8.4-mingw.exe,按照过程中会要求指定mingw,指定刚刚的解压目录即可。

然后安装qt-creator-windows-opensource-2.6.1.exe,这个不用多说了。

安装完成后打开Qt Creator,通Linux下的设置一样,打开设置,这里只需要指定mingw的目录即可,同样指定到g++工具,如下图所示,可以看到两者界面几乎一样,下面的操作就基本一致了,只是这里没有配置用于arm平台的工具链。

D. 请问编译器的自动提示功能是如何实现的

没有什么特殊的办法,就是用户在输入代码的同时(而不是编译时)就在内存中建立代码DOM,实时地进行检测。

E. 我运行codeblack出现这种情况是啥意思 Target uses an invalid c

目标使用无效的编译器;运行中止。

F. gcc编译器在编译过程会进行哪些检查

一个编译器,执行的时候
先会做词法分析,其中会判断是否符合词法规范,一般用有限自动机写
然后是语法分析,自顶向下的LL和自底向上的LR,会判断是否符合文法规范
然后就是四元式,语义动作、汇编指令,后面的检查应该就不多了

G. 编译器本身是如何进行测试的

编译器最重要的性质就是保证语义的正确。比如,从高级语言翻译到机器指令之后,指令必须正确的表达原来程序的意思。所以一般编译器测试都包含一些源程序,用来覆盖可能出现的各种情况。基本的原则是:原来程序的结果 = 编译后机器指令运行的结果。机器指令运行的结果很容易知道,运行一下就知道了。可是原来程序的结果你怎么知道呢?
为了解决这个“原来程序语义”的问题,最好是写一个解释器,准确无误的表达原来的代码的语义。所以我们的要求就是:
高级语言解释器(源程序) = 机器执行(机器代码)
由于处理器其实就是一个用来执行机器代码的解释器,这里有一个很美好的对称关系:
interp1(L1) = interp2(L2)
另外还有一个问题,就是编译器一般需要经过多个转化步骤(叫做 pass)才能最后编译为机器指令。比如,
L2 = pass1(source)
L3 = pass2(L2)
L4 = pass3(L3)
Ln = passN(Ln-1)
machine_code = codegen(Ln)
由于源程序经过了很多步骤猜得到最后的机器指令,如果你使用上面的公式,就会出现以下一些情况:
1. 知道结果错了,但是却不知道到底是哪一个 pass 错了。
2. 结果没有错,但是中间却有 pass 实际上是错的。但是由于之前的 pass 把输入程序的一些结构给“优化”掉了,所以错的那个 pass 其实没能得到触发错误的那个数据结构。所以测试没能发现错误。如果以后前面的那个 pass 被修改,错误就会暴露出来。这是非常难以发现的潜伏的危险。
为了防止这些情况出现,一些编译器(比如 Chez Scheme 和 Kent Dybvig 的课程编译器)使用了对每一个 pass 进行测试的做法。具体的方法就是为每一个中间语言都写一个解释器,把这语言的语义完全的表示出来。这样我们就需要检查一组等式:
L2 = pass1(source)
高级语言编译器(源程序) = interp2(L2) // 测试 pass1 的正确性
L3 = pass2(L2)
interp2(L2) = interp3(L3) // 测试 pass2 的正确性
这样一来我们就能独立的判断每一个 pass 的正确性了。
这些是基本的语义测试原理。另外除了语义,可能还有一些“表面”一些的测试,它们看代码本身,而不只看它的语义。比如尾递归优化的测试应该确保输出程序的尾递归得到正确的处理,等等。这些是语义测试检查不到的,因为尾递归没有正确处理的程序大部分也能输出正确的结果。
普通的单元测试方法也可以用来测试一些编译器里的辅助函数,但那些不是编译器特有的,所以就不讲了。
另外,就像所有测试的局限性一样,你没法枚举所有可能出现的输入,所以以上的测试方法其实也不能保证编译器的完全正确。

H. 用eclipse 编写java代码时,他为什么能自动识别语法错误及给出正确的写法这是JAVA编译器的哪种特性

这是靠eclipse自带的插件实现的,的确属于静态分析。动态分析我不太了解,可能会涉及到jvm,但主要是在编译器内获取一些动态信息,如果想对java的多态进行分析就需要动态分析,即在编译时获取具体调用的类的信息。但如果是问eclipse的语法纠错,远没涉及那么高级的内容。
如果你去看eclipse文件夹下的plugins文件夹,你能找到类似org.eclipse.jdt.XXX.XXX的若干jar文件,那些包就是eclipse专门用以处理java代码分析工作的jdt插件工具包。他能抽取java代码的AST(抽象语法树),也就是编译时用到的数据结构,你若学过编译原理就知道了,反正我还没学。如果做一些java方面的逆向工程,你甚至可以引用eclipse的jdt包,将java项目的代码通过相应接口(你可以在网上找到jdt的api和实例代码)传进去,获取代码中的类,字段,方法,和更细节的信息。
而jdt中也包含检测,处理语法错误的包,可以发现并纠正语法错误。这一特点还可以用来做一些正向工程(如自修改或动生成代码)。
哦,还有,针对你的问题还要说,这点特性不是编译器的,而是编辑器eclipse的。注意,绝对是编辑器的特点!虽然涉及到语法问题,但在eclipse纠错时,还没有调用编辑器,即程序还没有编辑。只有在运行程序前eclipse才会调用编辑器。编译一次不容易,每次纠错都调用编译器的话开销太大,纠错的反应速度绝对不会像平时eclipse做的那么快。
实际上eclipse可以说就是由各种插件组成的,它本身只提供一个供各种插件运行的平台,本身功能很简单,但就是通过向jdt这样的插件包实现各种复杂的功能。

I. codeblocks使用什么编译器编写

1,安装 Code:Blocks安装版本有两个,一个是不带MinGW,一个是带MinGW(GNU工具在Windows上的一种移植,里面有GNU编译器套件) 当然Code:Blocks里面也支持其他编译器,比如微软的VS C++,Code:Blocks会自动侦测,或者你自己可以手动设定

J. c语言编译器怎么检查错误的

C语言编译器有好多种
大同小异
有DEV-C++
VC6.0等
检查错误
都能检查
但只能检查出语法错误
不能检查出逻辑错误

阅读全文

与编译器自动侦测相关的资料

热点内容
查公司服务器能说明什么问题 浏览:306
苹果手机怎么给我的电话加密码 浏览:667
程序反编译教学 浏览:656
ecc加密算法c语言代码 浏览:877
nvr预览提示码流已加密 浏览:740
编程怎么让飞镖掉落下来 浏览:590
如何在服务器上运行后台代码 浏览:768
安卓手机编译时间 浏览:322
php插入数据库代码 浏览:389
明日之后怎么搜索别的服务器的人 浏览:826
思迅加密锁驱动未能正常升级 浏览:141
文件夹哪个是相册跟视频 浏览:168
用函数编译计算器程序 浏览:702
保卖数码是哪个app 浏览:133
汽车级单片机特点 浏览:280
visualstudio教程pdf 浏览:644
oracle命令窗口 浏览:984
51单片机开发板应用演示 浏览:491
编译程序利用子函数计算 浏览:1003
编译terminated 浏览:988