【问题标题】:"Launch Failed. Binary Not Found." Snow Leopard and Eclipse C/C++ IDE issue“启动失败。找不到二进制文件。” Snow Leopard 和 Eclipse C/C++ IDE 问题
【发布时间】:2010-12-12 17:04:48
【问题描述】:

不是问题,我刚刚在互联网上搜索了该问题的解决方案,并认为我会与 SO 的好人分享。我会用简单的术语来说明它,以便新手可以使用它。 :)(抱歉,如果这是错误的地方 - 只是想提供帮助。)

几乎所有尝试使用 Eclipse C/C++ IDE 的 OS X Snow Leopard 用户都会出现此问题,但对于在 Leopard 中使用 Eclipse C/C++ IDE 的人(如我)来说尤其烦人,并且升级后无法再使用 Eclipse。当用户去构建/编译/链接他们的软件时,就会出现这个问题。他们收到以下错误:

启动失败。找不到二进制文件。

此外,左侧项目窗口中的“二进制”分支根本不存在。

问题:Snow Leopard 附带的 GCC 4.2(GNU 编译器集合)默认编译 64 位二进制文​​件。不幸的是,Eclipse 使用的链接器不理解 64 位二进制文​​件。它读取 32 位二进制文​​件。这里可能还有其他问题,但简而言之,它们最终导致没有生成二进制文件,至少不是 Eclipse 可以读取的,这意味着 Eclipse 找不到二进制文件。因此出现错误。

一种解决方案是在制作文件时添加 -arch i686 标志,但每次手动制作文件很烦人。幸运的是,Snow Leopard 还附带 GCC 4.0,默认编译为 32 位。因此,一种解决方案只是将其链接为默认编译器。我就是这样做的。

解决方案:GCC 位于 /usr/bin 中,这通常是一个隐藏文件夹,因此您无法在 Finder 中看到它,除非您明确告诉系统您想查看隐藏文件夹。无论如何,您要做的是转到 /usr/bin 文件夹并删除将 GCC 命令与 GCC 4.2 链接的路径,并添加将 GCC 命令与 GCC 4.0 链接的路径。换句话说,当您或 Eclipse 尝试访问 GCC 时,我们希望命令转到默认构建为 32 位的编译器,以便链接器可以读取文件;我们不希望它进入以 64 位编译的编译器。

最好的方法是转到应用程序/实用程序,然后选择名为终端的应用程序。应该出现一个文本提示。它应该说类似“(计算机名):〜(用户名)$”(最后有一个空格供用户输入)。完成上述任务的方法是输入以下命令,按顺序逐字输入每个命令,并在每一行后按回车键。

cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.0 cc
ln -s gcc-4.0 gcc
ln -s c++-4.0 c++
ln -s g++-4.0 g++

像我一样,您可能会收到一条错误消息,告诉您您无权访问这些文件。如果是这样,请尝试以下命令:

cd /usr/bin
sudo rm cc gcc c++ g++
sudo ln -s gcc-4.0 cc
sudo ln -s gcc-4.0 gcc
sudo ln -s c++-4.0 c++
sudo ln -s g++-4.0 g++

Sudo 可能会提示您输入密码。如果您以前从未使用过 sudo,请尝试按 Enter 键。如果这不起作用,请尝试使用您的主管理员帐户的密码。

其他可能的解决方案 您可以将构建变量输入到 Eclipse 中。我试过这个,但我对此知之甚少。如果您想感受一下,您可能需要的标志是 -arch i686。说真的,GCC-4.0 一直为我工作,我现在看不出有任何理由切换。可能有一种方法可以更改编译器本身的默认值,但我对它的了解还不够。

希望这对您有所帮助且内容丰富。编码不错!

【问题讨论】:

  • 哦,还有一件事不要忘记在更改链接之前记录它们!如果您不想更改系统范围的设置,请在 /usr/bin 之前的 PATH 中添加一个目录(例如,$HOME/bin),并在其中创建符号链接如果您想更改回来,这是我将使用的代码: cd /usr/bin sudo rm cc gcc c++ g++ sudo ln -s gcc-4.2 cc sudo ln -s gcc-4.2 gcc sudo ln -s c++-4.2 c++ sudo ln -s g++-4.2 g++ 你要检查您的 /usr/bin 并查找类似“gcc-4.x”的文件。如果不是 4.0 或 4.2,请将上面的版本号替换为您拥有的版本号。
  • 你应该把这个放在你的问题下面。
  • 首先遇到了这个问题:stackoverflow.com/questions/1788043/…,然后我就遇到了这个问题。感谢您的帖子。

标签: c++ eclipse executable osx-snow-leopard


【解决方案1】:

仅作记录,在挣扎了 30 分钟后,我通过选择 Mach-O 64 Parser 和 Elf Parser 在 Lion (mac 10.7) 上解决了这个问题:项目菜单 -> 属性 ->C/c++ 构建 -> 设置 - >Binary Parsers 选项卡(Eclipse 版本中的第一个选项卡或第三个选项卡:3.7.2)[一边听 gwen stefani 的甜蜜逃脱,一边大声笑]。

【讨论】:

  • 我遇到了同样的问题。这为我修好了!非常感谢!
  • 在 MacOS 10.9.2 Mavericks 和 Eclipse 版本:3.7.2 下帮助了我很多并解决了我的问题。谢谢!
  • 有没有办法让每个项目都选择它?因为它很烦人!
  • 就是这样。同意上面的评论,我想知道为什么默认情况下它没有启用。非常感谢。
【解决方案2】:

我收到了同样的信息

启动失败。找不到二进制文件。

因为我没有意识到我需要按住 ctrl 键单击项目文件夹并选择“构建项目”。在 Eclipse 中的 Java 项目中不必这样做,因此像我这样的其他初学者可能会遇到同样的问题。

【讨论】:

  • 太棒了! :D 哈哈有时我无法想象解决方案有多明显
  • 在 MacOS 10.9.2 Mavericks 和 Eclipse 版本:3.7.2 下帮助了我很多。谢谢!
【解决方案3】:

如前所述,这可以通过在 eclipse 中添加必要的标志来完成。

为此打开属性窗口,然后转到“c/c++ build”>“设置”。在右侧的树形视图中,转到“MacOS X C 链接器”和“GCC C 编译器”的“杂项”,并附加到标有 ~“flags”的文本框中:“-arch i686”

【讨论】:

    【解决方案4】:

    我正在运行 Mac OSX 10.6.8,并且我的 Eclipse 安装了 Cross GCC 工具链。所以,我这样做了:

    1. 在项目的属性下,选择 C/C++ 构建 -> 工具链编辑器。
    2. 将当前工具链从 Cross GCC 更改为 MacOSX GCC。
    3. 我还将当前构建器更改为 CDT 内部构建器。 (我不确定这是否重要。)
    4. 我把所有东西都留在了“设置”下。
    5. 重建。您应该会在项目的 Debug 文件夹中看到与您的项目同名的二进制文件。

    【讨论】:

      【解决方案5】:

      哦,还有一件事不要忘记在更改链接之前记录它们!如果您不想更改系统范围的设置,请在 /usr/bin 之前的 PATH 中添加一个目录(例如,$HOME/bin),并在此处创建符号链接如果您想更改回来,这是我将使用的代码:

      cd /usr/bin
      sudo rm cc gcc c++ g++
      sudo ln -s gcc-4.2 cc
      sudo ln -s gcc-4.2 gcc
      sudo ln -s c++-4.2 c++
      sudo ln -s g++-4.2 g++
      

      您需要检查您的 /usr/bin 并查找类似“gcc-4.x”的文件。如果不是 4.0 或 4.2,请将上面的版本号替换为您拥有的版本号。

      编辑:哦,如果我使用的是 GCC-4.0,我也无法运行 64 位 carbon Eclipse。但是,32 位 Carbon 效果很好。

      【讨论】:

        【解决方案6】:

        我有一个名为 gcc_select 的程序,它在某处有一个 prefs 文件,可以让你在多个 gcc 版本之间来回切换...

        我想我是从 macports 获得的,但我不确定。

        【讨论】:

          【解决方案7】:

          “如前所述,这可以通过在eclipse中添加必要的标志来完成。

          为此打开属性窗口,然后转到“c/c++ build”>“设置”。在右侧的树视图中,转到“MacOS X C 链接器”和“GCC C 编译器”的“杂项”,并在标有 ~“flags”的文本框中附加:“-arch i686””

          注意,如果你走这条路,你可以通过调用命令轻松检查你的处理器架构

          uname -p

          在 Bash 终端(即 Terminal.app)中,将“-arch i686”更改为“-arch -i386”。

          【讨论】:

            【解决方案8】:

            改为转到项目 -> 属性; 选择 C/C++ 构建 -> 设置; 在工具设置下,将 C++ 编译器和链接器命令从 g++ 更改为 g++-4.0。如果您仍然遇到任何错误,请将 c 编译器也更改为 gcc-4.0。为了安全起见,我也更改了 C 编译器设置。对我来说一切都很好。

            【讨论】:

              【解决方案9】:

              您好,我安装了 Eclipse 32 位,目前在 mac Mountain lion 上运行良好。 我在编译时找不到二进制文件,但现在使用 32 位 Eclipse 没问题。

              【讨论】:

                【解决方案10】:

                只需从您的项目中删除“Debug”文件夹,然后运行“Build project”。

                【讨论】:

                  猜你喜欢
                  • 2011-11-20
                  • 2010-11-29
                  • 1970-01-01
                  • 2015-11-13
                  • 2021-09-02
                  • 2015-02-11
                  • 2017-11-16
                  • 2012-03-13
                  • 2011-12-11
                  相关资源
                  最近更新 更多