内部构建器:无法运行程序“g ++”:系统找不到指定的文件

时间:2010-04-09 10:46:27

标签: eclipse cygwin eclipse-cdt

****** Internal Builder is used for build               ******
g++ -ot1.o ..\t1.cpp
Internal Builder: Cannot run program "g++": The system cannot find the file specified.

Build error occurred, build is stopped

我是eclipse的新手,在Windows XP上,想运行c / c ++ progms + linux build(cygwin安装了所需的软件包)
上面说的错误即将到来,构建失败!请建议。

编辑:将路径env变量附加为e:\cygwin\bin;

这是针对参考:

alt text http://www.freeimagehosting.net/uploads/f1d71ae208.gif

4 个答案:

答案 0 :(得分:3)

你是怎么setup your Cygwin toolchain in your Eclipse CDT的? (来自Alex WuAlex's Tech Blog的优秀博文)

  

1 /正确安装Cygwin,您需要以下软件包:

binutils
gcc
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
make
gdb (needed if you want to support debug in eclipse)
  

您可以使用“cygcheck -c”命令

检查您的cygwin安装

alt text

  

2 /将%cygwin%\bin添加到您的env PATH,然后打开日食。你会发现当你打开一个新的c / cpp项目向导时会显示cygwin工具链。

alt text

3 /配置GDB。

转到Windows->Preference->C/C++ -> Debug -> Common Source Lookup 添加以下'路径映射':

\cygdrive\c -> c:\
\cygdrive\d -> d:\ 
other drives if any .......

alt text

答案 1 :(得分:1)

我刚遇到同样的错误;这是我第一次使用eclipse与cygwin。我对日食也很新,但我对它的强大程度印象深刻。不幸的是,这个问题差不多在一年前被问到了。在此期间,软件可能已经发生了很大的变化,以至于我的建议在这个问题上可能是不合时宜的。

我正在使用Eclipse IDE for C / C ++ Developers Helios Service Release 2 版本1.3.2.20110218-0812

uname说Cygwin版本是CYGWIN_NT-6.1-WOW64

在关注这个问题的许多网络帖子的(经常是过时的)建议后,最终似乎有两件事情可以使它发挥作用。我的sysadmin,只有谁有权执行软件安装,需要增加我对cygwin / bin文件夹的访问权限,该文件夹现在为Read and Execute。其次,在eclipse中我将构建器的类型更改为External:File> Properties C / C ++ Build,Builder type:External builder。 Build现在可行,但不是没有抛出一些警告。我仍然对安装的许多复杂性感到困惑,我不确定为什么切换到外部构建器会产生这样的差异。

答案 2 :(得分:0)

我同意@pajton需要纠正Eclipse对从c:\cygwin\usr\binc:\cygwin\bin的Cygwin二进制路径的期望,因为Cygwin的作者改为将/ usr / bin安装到后者上。

我需要在我的开发人员构建Juno 20120322-1740的两个配置位置将Eclipse添加的Cygwin二进制目录从c:\cygwin\usr\bin更改为c:\cygwin\bin

  • 项目属性/ C / C ++构建/环境

  • 运行/运行配置... /环境

我还在Compiler invocation commandsh的发现选项c:\cygwin\bin\dash.exe中更改了shell解释器的路径,

  • 项目属性/ C / C ++构建/发现选项/ Cygwin C编译器

  • 项目属性/ C / C ++构建/发现选项/ Cygwin C ++编译器

这允许在Project Properties / C / C ++ General / Paths and Symbols中自动填充include目录和内置宏。

因为只有Cygwin构建的程序(例如bash.exedash.exe解析了Cygwin样式的可移植符号链接),所以我将编译器调用命令从gcc更改为gcc-4和{ {1}}到g++

  • 项目属性/ C / C ++构建/设置/工具设置/ Cygwin C ++编译器

  • 项目属性/ C / C ++构建/设置/工具设置/ Cygwin C编译器

  • 项目属性/ C / C ++构建/设置/工具设置/ Cygwin C ++链接器

也许,当我看到声称要解决问题的git存储库发生变化时,这将很快自动完成,

当我调查我的问题时,我去了帮助/安装新软件... / Juno /编程语言/ C / C ++开发工具。

当我尝试升级所选的部分时,我收到一条不清楚的消息,说其他部分要求升级。当我按下“完成”时,我收到了重新启动的提示。我不知道是否通过这些操作升级了我的CDT。

如果要在运行时捕获访问冲突,请在“运行/外部工具...”/“配置外部工具”中创建外部工具条目。指定g++-4作为程序,c:\cygwin\bin\bash.exe,例如${workspace_loc:/PROJECT_NAME/CONFIG_NAME}作为工作目录,并指定命令选项,后跟参数中的程序名称,如${workspace_loc:/test/Release}。我发现-c "./test.exe"没有将Cygwin DLL生成的堆栈跟踪路由到Eclipse捕获的stderr。

答案 3 :(得分:0)

解决此问题的另一种方法是转到

project properties / c/c++ build / settings / tool settings / cygwin C compiler

并将命令更改为

sh -c 'whatever was already there'

这将使用 sh 来调用命令,因此它将解析cygwin链接。您还必须为汇编器和链接器执行此操作。当然,在开始eclipse之前,你还必须确保你的路径指向c:\ cygwin \ bin。