【问题标题】:How to deal with Eclipse CDT+Cygwin?Eclipse CDT+Cygwin如何处理?
【发布时间】:2012-05-14 21:24:40
【问题描述】:

最近我安装了Eclipse Indigo Service Release 2(for JAVA EE)并在线安装了CDT 8。然后我安装了最新版本的带有gcc、g++、gdb、make、binutils、automake等的Cygwin。我还做了环境变量 PATH 正确。

创建一个新的 C++ 项目(使用 Cygwin GCC 工具链)很好,但是在输入 HelloWorld 程序后,它会显示很多错误和警告。

使用外部构建器时,错误显示

“无法运行程序“make”:?????????¨?”。

当使用内部构建器时,附上它会显示

"g++ -IC:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include\c++ -O0 -g3 -Wall -c -fmessage-length=0 -o src\test_cpp.o 。 .\src\test_cpp.cpp

错误:无法运行程序“g++”:?????????¨?

发生构建错误,构建已停止

在 Windows CMD 和 Cygwin 终端中,g++ 并使两者都能正常工作。

另外,Eclipse 找不到包含的库,所以我必须在项目属性中添加路径 C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include\c++ -> C/C++ Building->Settings.But之后,错误,它仍然显示,

'std' 不明确'

'endl' 的重载无效

符号“cout”无法解析

在项目属性->C/C++ 构建->发现选项中,我将发现配置文件范围设置为配置范围,将发现配置文件设置为每个文件扫描仪信息配置文件的 GCC。

【问题讨论】:

  • 新建项目时是否选择了cygwin工具链?
  • 是的,但是还是不行。

标签: c++ eclipse cygwin eclipse-cdt


【解决方案1】:

你必须设置一个 Cygwin 工具链,首先安装 Cygwin 和以下软件包:

binutils
gcc
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
make

%cygwin%\bin 添加到您的PATH 环境变量中,然后打开Eclipse,当您打开一个新的c/cpp 项目向导时将显示Cygwin 工具链。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我遇到了类似的错误,对我有用的错误如下: 在设置中:'Project|Properties|C/C++ General|Indexer',我取消选中'Allow heuristic resolutions of includes' 并保存设置。重建后,我所有的错误,如 ''std' is ambiguous ...' 都消失了。

      【讨论】:

        【解决方案4】:

        您是否检查过您使用的是哪个二进制解析器?

        右键单击您的项目,属性,C/C++ 构建,设置,二进制解析器选项卡,如果您使用的是 Windows 操作系统,请选择 PE Windows Parser 或适用于 Linux 操作系统的 Elf Parser。

        【讨论】:

          【解决方案5】:

          给出使用 eclipse + CDT + cygwin-gcc 编写 hello world 程序的所有基本步骤。

          您一定错过了从 3 到 7 的一些步骤。

          1. 使用包binutilsgcc-coregcc-g++gdbmake 安装cygwin。 我之前没有安装任何包裹。所以我在安装 cygwin 后安装了这些软件包。您可以通过重新运行 cygwin 的 setup exe(this answer 中的第 3 点)或使用apt-cyg 来安装它们,如this answer 中所述:
          2. 在eclipse中安装CDT plugin或者安装CDT eclipse
          3. 设置 windows path 环境变量以包含 cygwin bin (C:\Program Files\cygwin\setup\bin) 和 lib (C:\Program Files\cygwin\setup\lib) 目录路径。 设置 windows classpath 环境变量以包含 cygwin lib 目录路径。
          4. 在windows命令提示符下运行命令gcc,g++,gdbmake检查安装的cygwin包是否可以访问并且没有给出命令未找到错误。对于gccg++make,它应该给出输入或目标文件未找到错误。对于gdb,它应该启动gdb 提示符,您可以通过在gdb 提示符中输入Quit 来转义。
          5. 启动eclipse并执行File > New > C/C++ Project
          6. 选择 C/C++ 托管构建:
            点击Next>
          7. 给出合适的项目名称。在工具链中选择Cygwin GCC

            它应该创建新项目并从环境变量中指定的 cygwin lib 目录中包含所需的头文件:
          8. 右键单击在项目资源管理器中创建的项目 > 将鼠标悬停在上下文菜单中的新建上 > 单击源文件夹。将名称 src 命名为新的源文件夹。
          9. 右键单击源文件夹并添加新的C源文件HelloWorld.c
          10. 右键单击项目并选择构建项目。它应该创建调试文件和可执行二进制文件:
          11. 右键单击打开的 c 文件,Run as > Local C/C++ Application。它应该运行前面步骤中生成的可执行文件。

          【讨论】:

          • 第 7 步不清楚。包含文件/文件夹被截断。
          • 只有第 7 步中的第一个屏幕截图描述了该步骤中要执行的操作。第二个屏幕截图显示了执行该操作的效果。第二张图片的裁剪部分应该不是问题。
          【解决方案6】:

          我运行的eclipse版本是Photon(4.8)。 我正在运行 cygwin64 版本 2.10.0(0.325/5/3)。

          我创建了一个新目录 - foo - 并在其中添加了以下文件:

          CMakeLists.txt:

          set(CMAKE_C_FLAGS "-g -O0")
          set(CMAKE_CXX_FLAGS "-g -O0 --std=c++17")
          add_executable (foo main.cpp)
          

          请注意,源代码级调试需要“-g -O0”。

          main.cpp:

          #include <iostream>
          
          using namespace std;
          
          int
          main()
          {
              cout << "Hello World" << endl;
              auto i = 5;
              cout << i << endl;
          }
          

          然后在 foo 目录中运行:

          cmake .

          然后我打开了eclipse。

          文件->导入 C/C++->现有代码为 Makefile 项目

          点击下一步

          我将现有代码位置设置为我的 foo 目录(通过浏览)

          这会自动将我的项目名称设置为 foo(您可以根据需要更改)

          在“索引器设置工具链”中设置“无”,然后完成。我们稍后会解决这个问题。

          现在在“项目资源管理器”窗格中,右键单击“foo”并转到“属性”

          转到“C/C++ 构建”

          转到“工具链编辑器”

          取消选中“仅显示兼容的工具链”

          在“当前工具链”下拉菜单中,选择“Cygwin GCC”

          点击“应用并关闭”

          再次,在“项目资源管理器”窗格中,右键单击“foo”并转到“属性”

          转到“C/C++ 构建”

          转到“环境”

          确保“CYGWIN_HOME”环境变量设置正确。默认设置是“C:\cygwin”,但这对我不利,并引起了很多问题。就我而言,它是 C:\cygwin64

          点击“应用并关闭”

          现在再次右键单击 foo 项目,然后单击“构建项目”

          在项目窗格中的 foo 下,单击 main.cpp 以显示它。在某处设置断点。

          按 F11

          您应该使用之前设置的断点。

          希望这会有所帮助。

          【讨论】:

            猜你喜欢
            • 2013-09-11
            • 1970-01-01
            • 2011-01-21
            • 1970-01-01
            • 1970-01-01
            • 2011-02-28
            • 2021-05-16
            • 2012-07-07
            • 2021-12-17
            相关资源
            最近更新 更多