c++ - OS X Eclipse C++ 启动失败 - 找不到二进制文件

标签 c++ eclipse macos eclipse-cdt osx-lion

我很烦恼,因为这不应该让我如此头疼。我已经为 MAC OS X 10.7.1/下载了最新的 Eclipse Indigo 和所有 CDT C++ 插件

安装上述 CDT 插件后重新启动后,我开发了一个简单的“hello world”c++ 应用程序并尝试运行该应用程序,“启动失败。找不到二进制文件。”错误信息。我已经阅读了多个修复程序,但没有一个奏效。我尝试将 -arch i386 标志添加到链接器和编译器命令中,但仍然没有运气。

有没有人成功地让 Eclipse C++ 在 10.7.1 上运行??????这让我大吃一惊。我可以简单地在 VIM 中编写相同的程序,然后通过终端编译它并执行得很好。 ECLIPSE 不想一起玩。

我将深深地感谢任何可以提供帮助的人!!!!!

编辑:编译器输出

**** Build of configuration Debug for project HelloWorld ****
make all Building file: ../main.cpp
Invoking: GCC C++ Compiler g++ -I/Developer/SDKs/MacOSX10.6.sdk/usr/include -O0 -g3 -Wall -c -fmessage-length=0 -arch i386 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: libHelloWorld
Invoking: MacOS X C++ Linker g++ -arch i386 -dynamiclib -o "libHelloWorld" ./main.o
Finished building target: libHelloWorld
**** Build Finished ****

最佳答案

我在运行 Snow Leopard 的 2007 Macbook 上使用带有 CDT 的 Eclipse Juno。我有两个症状:

  • Project Explorer 中没有 Binaries 文件夹,以及
  • '发射失败。找不到二进制文件'错误。

  • 我花了几个小时在谷歌上搜索答案,时间长到足以确定这两个症状表明存在任何数量的问题,这些问题已经报告了不到十年的时间,但没有得到足够的解决。这是一个问题,因为十年后应该有足够多的输入数据在某处提供一个故障排除程序,引导用户逐步消除所有可能的原因。

    取而代之的是,几个小时以来,我已经阅读了许多人的信息,其中许多人已经解决了他们的特定问题,但他们似乎都必须做一些稍微不同的事情才能到达那里。

    这应该不难解决。特别是在像我这样的情况下 [但我不是唯一的] 当控制台 View 显示一个没有错误的构建但用户可以将二进制文件 [Eclipse 奇怪地说它找不到] 复制到桌面并在没有错误的情况下运行它Finder 或 bash 终端 session 中的任何问题。

    所有这些似乎都在强调 Mach0 64 二进制解析器中缺乏足够的指标,它应该旨在告诉我们它没有看到它需要什么 .

    诚然,对于像我这样在 64 位 CPU 上运行 64 位操作系统 [Snow Leopard] 的 MacBook,这种情况更加严重,不幸的是,制造商在 32 位启动内核上受阻。但是,预先警告,我已经尝试了 -arch i386 g++ 开关,以及将 g++ 重新链接到 g++-4.0 而症状没有任何变化。

    2012 年 7 月 10 日添加的附录:

    我添加这个 list 是希望为 future 几年将提出这个问题的许多其他人澄清一条道路。这种方式反射(reflect)了我在运行 Snow Leopard 的 Mac 上使用 Eclipse Juno 时发现的必要条件:

    1) 转到 Preferences->C/C++->New CDT Project Wizard,在 Preferred Toolchains 下,确保所有 Executable 项目类型都设置为 MacOSX GCC。

    2)这是一个大问题。通过使用不包含点 ['.'] 的项目名称,我能够在项目资源管理器中获得一个 Binaries 文件夹,因此能够在构建项目后运行该项目。这是我从这里的另一个答案中学到的,在我上一条消息后几个小时进行了编辑。这个要求很容易被忽略,因此很常见,特别是如果您有 Eclipse 经验但只使用其他语言,因为其他语言插件的教程 [例如 PyDev 或 Java] 经常让您创建名称中带有点的项目。如果您已经在其他语言中养成了这种习惯,那么在将 CDT 用于 C/C++ 时打破它。但是,请预先警告,这次不使用点仅执行右键单击并重命名现有项目名称是不够的。最简单的方法是删除旧项目并创建一个名称不带点的新项目。

    3) 有许多网站提醒您确保使用 -arch i386 编译器开关或将/usr/bin/gcc 和/usr/bin/g++ 的链接更改为指向 gcc-4.0 和 g++-4.0 而不是gcc-4.2 和 g++-4.2。我创建了一个 bash 脚本来简化来回切换并调查是否有必要。不是,至少不是我的 Macbook。根据我在一个站点上从 Mach-O 开发人员那里读到的信息,我怀疑当前版本的 Mach-0 64 是双向的。这是一个很好的继续......

    4) 在项目属性而不是首选项中,转到 C/C++ Build->Settings 并在 Binary Parsers 下确保选中 Mach-O 64 Parser。确保选中此项,而不是已弃用的 Mach-O 解析器。

    5) 此时,在您构建您的项目之后,Project Explorer 中应该有几件事情是显而易见的:

    6) 现在项目文件夹下应该有一个 Binaries 文件夹。

    7) 在那个 Binaries 文件夹中现在应该是你的可执行文件。如果像我一样,您的 Mac 实际上是 32 位,那么它旁边应该有 [x86_64/le]。现在不是讨论 Mac 是有效的 32 位还是 64 位这一令人困惑的话题的最佳时机。如果您不知道,而且很多人不知道,因为 Apple 确实让您感到困惑,请查看可以从 http://www.ahatfullofsky.comuv.com/English/Programs/SMS/SMS.html 下载的小应用程序它会告诉你什么是真理。它是免费的,但“代价”是你必须滚动页面顶部的反射(reflect)程序员政治倾向的广告。

    关于c++ - OS X Eclipse C++ 启动失败 - 找不到二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473259/

    相关文章:

    c++ - QProcess.execute() 一个 DOS 命令

    eclipse - Ant/Eclipse 提示工件 :dependencies

    macos - 如何在 mac os x 10.8.2 上重置 postgresql 9.2 默认用户(通常为 'postgres' )密码?

    c++ - 澄清通过引用传递指针

    c++ - 证书链的根证书是自签名的,不受信任的

    c++ - 迭代插入到二叉搜索树中。调试 C++ 代码

    java - 从 Android 手机上未完成的应用程序恢复源代码

    android: eclipse 不加载模拟器设备

    macos - 在 Visual Studio 2017 for Mac 中更改行结尾

    macos - “pgAdmin3” 无法打开,因为它来自身份不明的开发者