【问题标题】:Binary is never build二进制永远不会构建
【发布时间】:2014-08-15 16:24:33
【问题描述】:

我无法运行以下代码:

#include <iostream>
int main()
{
    std::cout << "Hello World" << std::endl;
    return 0;
}

没有编译错误。 构建输出:

18:18:58 **** Incremental Build of configuration Debug for project First Project ****
Info: Internal Builder is used for build
g++ "-Ic:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++" "-Ic:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++\\mingw32" "-Ic:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include\\c++\\backward" "-Ic:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include" "-Ic:\\mingw\\include" "-Ic:\\mingw\\lib\\gcc\\mingw32\\4.8.1\\include-fixed" -O0 -g3 -Wall -c -fmessage-length=0 -o Hello.o "..\\Hello.cpp" 

18:18:58 Build Finished (took 166ms)

我收到可怕的“启动失败。找不到二进制文件”。对话。我已经在谷歌上呆了几个小时了,但没有任何效果。 在我的项目文件夹中,创建了一个调试或发布文件夹(取决于我将其设置为什么),但它始终为空。正如一些帖子所提到的那样,没有创建“二进制”文件夹。 没有提出的解决方案有效,禁用防病毒软件也没有解决它。 我该如何解决?谢谢。

编辑 Eclipse 版本 Kepler Severive 版本 1 版本号:20130919-0819 CDT版本:8.3.0.201402142303

我正在使用 MinGW

EDIT2 将属性>c/c++ 构建>工具链编辑器中的“当前构建器”从 CDT 内部构建器更改为 Gnu Make Builder 会生成一个 makefile。 输出: 13:57:41 ** 为项目 First Project 自动构建配置调试 ** 做所有 构建文件:../Hello.cpp 调用:GCC C++ 编译器 g++ -I"c:\mingw\lib\gcc\mingw32\4.8.1\include\c++" - I"c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\mingw32" - I" c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\backward" -I"c:\mingw\lib\gcc\mingw32\4.8.1\include" -I"c:\mingw\include " -I"c:\mingw\lib\gcc\mingw32\4.8.1\include-fixed" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Hello.d" -MT "Hello.d" -o "Hello.o" "../Hello.cpp" make: * [Hello.o] 错误 1

13:57:42 构建完成(耗时 881 毫秒)

【问题讨论】:

  • 看起来你只是在编译,而不是链接。
  • 您只是在编译源代码。日志中没有链接阶段。
  • 在 Debug 或 Release 下的 Project Explorer 视图中,您是否看到自动生成的“makefile”?你也能发一下吗?您使用的是什么版本的 Eclipse?
  • “我正在使用 MinGW”——这是你真正的问题。
  • 我将属性>c/c++ build>工具链编辑器中的“当前构建器”从CDT内部构建器更改为Gnu Make Builder,现在它确实生成了“makefile”以及objects.mk 、sources.mk 和 subdir.mk。我应该发布makefile的内容吗?

标签: c++ eclipse-cdt


【解决方案1】:

您使用的是哪个编译器?看来您只是在编译代码,而不是链接它。您必须构建和链接才能使其工作。

【讨论】:

    【解决方案2】:

    -c 标志只编译源文件。它不会与目标文件链接到可执行文件中。添加这个:

    g++ -o "..\\Hello.exe" "..\\Hello.o" && "..\\Hello.exe"
    

    【讨论】:

    • -o 标志用于命名输出文件。它与编译与链接无关。您的命令链接的原因是因为您没有传递 -c 标志。您还可以使用如下命令编译和链接:g++ Hello.cpp
    • 那我应该在哪里添加呢?我正在使用工具栏上的按钮来构建和运行。它不应该自动链接吗?
    【解决方案3】:

    只需从编译行中删除-c 标志并将-o Hello.o 更改为-o Hello.exe(猜你使用Windows)。

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 1970-01-01
      • 2013-03-01
      • 2011-04-13
      • 2013-11-14
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多