"发射失败.找不到二进制文件." Snow Leopard和Eclipse C/C++ IDE问题

Ale*_*lex 23 c++ eclipse executable osx-snow-leopard

不是问题,我只是搜索互联网寻找这个问题的解决方案,并认为我会与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位编译的编译器.

执行此操作的最佳方法是转到Applications/Utilities,然后选择名为Terminal的应用程序.应该出现文字提示.它应该说"(计算机名称):〜(用户名)$"(最后为用户输入一个空格).完成上述任务的方法是输入以下命令,按顺序输入每个命令VERBATIM,然后在每个单独的行后按Enter键.

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++
Run Code Online (Sandbox Code Playgroud)

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

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++
Run Code Online (Sandbox Code Playgroud)

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

其他可能的解决方案您可以将构建变量输入Eclipse.我尝试过这个,但我对此并不了解.如果你想感受一下,你可能需要的旗帜是-arch i686.认真地说,GCC-4.0一直都在为我工作,我认为现在没有任何理由改变.可能有一种方法可以改变编译器本身的默认值,但是我再一次对它不了解.

希望这对您有所帮助和信息.好编码!

Vir*_*ren 19

仅仅为了记录,经过30分钟的努力,我通过在下面选择Mach-O 64 Parser和Elf Parser解决了Lion(mac 10.7)上的这个问题:Project Menu - > Properties-> C/c ++ Build-> Settings-> Binary Parsers选项卡(Eclipse版本的第一个选项卡或第三个选项卡:3.7.2)[在听gwen stefani的甜蜜逃脱时].


Cha*_*lie 18

我得到了同样的信息

发射失败.找不到二进制文件.

因为我没有意识到我需要按住Ctrl键单击项目文件夹并选择"Build Project".这不必在Eclipse中的Java项目中完成,因此像我这样的其他初学者可能会遇到同样的问题.


小智 8

如上所述,这可以通过在eclipse中添加必要的标志来实现.

这样做打开属性窗口,然后转到"c/c ++ build">"settings".在右边的树视图中,转到"MacOS XC Linker"和"GCC C编译器"的"杂项",并在标有〜"flags"的文本框中追加:" - arch i686"


小智 5

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

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


Ale*_*lex 3

哦,还有一件事,在更改链接之前不要忘记记录它们!如果您不想更改系统范围的设置,请在 /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++
Run Code Online (Sandbox Code Playgroud)

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

编辑:哦,如果我使用 GCC-4.0,我在运行 64 位 Carbon Eclipse 时也会遇到问题。然而,32 位 Carbon 的表现却非常出色。