”启动失败。未找到二进制文件。”雪豹和 Eclipse C/C++ IDE问题
不是问题,我刚刚在互联网上搜索了这个问题的解决方案,并认为我会与 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 位进行编译的编译器。
执行此操作的最佳方法是转到“应用程序/实用程序”,然后选择名为“终端”的应用程序。应该会出现文本提示。它应该显示类似“(计算机名称):~(用户名)$”(末尾有一个供用户输入的空格)。完成上述任务的方法是输入以下命令,按顺序逐字输入每个命令,并在每一行后按 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++
像我一样,您可能会收到一个错误,告诉您没有访问这些文件的权限。如果是这样,请尝试以下命令:
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 一直对我有用,而且我现在看不出有任何理由要切换。可能有一种方法可以改变编译器本身的默认值,但我再次对此了解不够。
希望这对您有所帮助且内容丰富。良好的编码!
Not a question, I've just scoured the internet in search of a solution for this problem and thought I'd share it with the good folks of SO. I'll put it in plain terms so that it's accessible to newbs. :) (Apologies if this is the wrong place -- just trying to be helpful.)
This issue occurs with almost any user OS X Snow Leopard who tries to use the Eclipse C/C++ IDE, but is particularly annoying for the people (like me) who were using the Eclipse C/C++ IDE in Leopard, and were unable to work with Eclipse anymore when they upgraded. The issue occurs When users go to build/compile/link their software. They get the following error:
Launch Failed. Binary Not Found.
Further, the "binaries" branch in the project window on the left is simply nonexistent.
THE PROBLEM: is that GCC 4.2 (the GNU Compiler Collection) that comes with Snow Leopard compiles binaries in 64-bit by default. Unfortunately, the linker that Eclipse uses does not understand 64-bit binaries; it reads 32-bit binaries. There may be other issues here, but in short, they culminate in no binary being generated, at least not one that Eclipse can read, which translates into Eclipse not finding the binaries. Hence the error.
One solution is to add an -arch i686 flag when making the file, but manually making the file every time is annoying. Luckily for us, Snow Leopard also comes with GCC 4.0, which compiles in 32 bits by default. So one solution is merely to link this as the default compiler. This is the way I did it.
THE SOLUTION: The GCCs are in /usr/bin, which is normally a hidden folder, so you can't see it in the Finder unless you explicitly tell the system that you want to see hidden folders. Anyway, what you want to do is go to the /usr/bin folder and delete the path that links the GCC command with GCC 4.2 and add a path that links the GCC command with GCC 4.0. In other words, when you or Eclipse try to access GCC, we want the command to go to the compiler that builds in 32 bits by default, so that the linker can read the files; we do not want it to go to the compiler that compiles in 64 bits.
The best way to do this is to go to Applications/Utilities, and select the app called Terminal. A text prompt should come up. It should say something like "(Computer Name):~ (Username)$ " (with a space for you user input at the end). The way to accomplish the tasks above is to enter the following commands, entering each one in sequence VERBATIM, and pressing enter after each individual line.
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++
Like me, you will probably get an error that tells you you don't have permission to access these files. If so, try the following commands instead:
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 may prompt you for a password. If you've never used sudo before, try just pressing enter. If that doesn't work, try the password for your main admin account.
OTHER POSSIBLE SOLUTIONS
You may be able to enter build variables into Eclipse. I tried this, but I don't know enough about it. If you want to feel it out, the flag you will probably need is -arch i686. In earnest, GCC-4.0 worked for me all this time, and I don't see any reason to switch now. There may be a way to alter the default for the compiler itself, but once again, I don't know enough about it.
Hope this has been helpful and informative. Good coding!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
只是为了记录,在挣扎了 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 的 sweet escape 哈哈]。
just for records, after struggling for 30 minutes, i solved this problem on lion (mac 10.7) by selecting Mach-O 64 Parser and Elf Parser under : Project Menu -> Properties->C/c++ Build->Settings->Binary Parsers tab (first tab, or third tab on Eclipse Version: 3.7.2) [ while listening to sweet escape by gwen stefani lol ].
我一直收到同样的消息
因为我没有意识到我需要按住 Ctrl 键单击项目文件夹并选择“构建项目”。这不必在 Eclipse 中的 Java 项目中完成,因此像我这样的其他初学者可能会遇到同样的问题。
I had been getting the same message of
because I had not realized I needed to ctrl-click on the project folder and select "Build Project." This does not have to be done in Java projects in Eclipse, so other beginners like myself might have the same problem.
如前所述,这可以通过在 Eclipse 中添加必要的标志来完成。
为此,请打开属性窗口,然后转到“c/c++ build”> “设置”。在右侧的树视图中,转到“MacOS XC Linker”和“GCC C编译器”的“杂项”,并在标有〜“flags”的文本框中附加:“-arch i686”
as mentioned, this can be accomplished simply by adding the necessary flag in eclipse.
to do so open the properties window, then go to "c/c++ build" > "settings". In the tree view on the right go to "miscellaneous" of "MacOS X C Linker" and "GCC C compiler" and append in the textbox labelled ~"flags" : "-arch i686"
我运行的是 Mac OSX 10.6.8,并且我的 Eclipse 安装了 Cross GCC 工具链。因此,我这样做了:
I'm running Mac OSX 10.6.8, and my Eclipse had the Cross GCC toolchain installed. So, I did this:
哦,还有一件事,在更改链接之前,不要忘记记录它们!如果您不想更改系统范围的设置,请在 /usr/bin 之前添加一个目录到 PATH(例如 $HOME/bin),并在那里创建符号链接如果您想改回来,这是我将使用的代码:
您需要检查 /usr/bin 并查找类似“gcc-4.x”的文件。如果不是 4.0 或 4.2,请将上面的版本号替换为您拥有的版本号。
编辑:哦,如果我使用 GCC-4.0,我在运行 64 位 Carbon Eclipse 时也会遇到问题。然而,32 位 Carbon 的表现却非常出色。
Oh, one more thing Don't forget to make a record of your links before you change them! If you don't want to change the system wide settings, add a directory into PATH before /usr/bin (say, $HOME/bin), and make the symlinks there If you want to change back, here's the code I would use:
You'll want to check your /usr/bin and look for a file that's like "gcc-4.x". If it isn't 4.0 or 4.2, substitute the version numbers above for the version number that you have.
EDIT: Oh, I also have trouble running the 64-bit carbon Eclipse if I'm using GCC-4.0. However, the 32-bit Carbon works great.
我有一个名为 gcc_select 的程序,它在某处有一个 prefs 文件,允许您在 gcc 的多个版本之间来回交换...
我想我是从 macports 获得的,但我不确定。
I got a program called gcc_select that has a prefs file somewhere and will allow you swap back and forth between multiple versions of gcc...
I think I got it from macports, but I'm not sure.
“如上所述,只需在 Eclipse 中添加必要的标志即可完成此操作。
为此,请打开属性窗口,然后转到“c/c++ build”>“设置”。在右侧的树视图中,转到“ “MacOS XC Linker”和“GCC C 编译器”的“杂项”,并附加在标有 ~“flags” 的文本框中:“-arch i686””
请注意,如果您选择此路线,您可以通过调用以下命令轻松检查处理器的体系结构 命令
uname -p并将“-arch i686”更改为“-arch -i386”。
在 Bash 终端(即 Terminal.app)中
"as mentioned, this can be accomplished simply by adding the necessary flag in eclipse.
to do so open the properties window, then go to "c/c++ build" > "settings". In the tree view on the right go to "miscellaneous" of "MacOS X C Linker" and "GCC C compiler" and append in the textbox labelled ~"flags" : "-arch i686""
Note that, if you go this route, you can easily check your processor's architecture by invoking the command
uname -p
in the Bash terminal (i.e. Terminal.app) and changing "-arch i686" to "-arch -i386".
相反,转到项目 ->特性;
选择C/C++构建->设置;
在“工具设置”下,将 C++ 编译器和链接器命令从 g++ 更改为 g++-4.0。如果仍然出现任何错误,请将 c 编译器也更改为 gcc-4.0。为了安全起见,我更改了 C 编译器设置。一切对我来说都工作得很好。
Instead go to Project -> Properties;
Select C/C++ Build -> Settings;
Under Tool Settings change the C++ compiler and Linker commands from g++ to g++-4.0. If you are still getting any errors change the c compiler also to gcc-4.0. I changed the C compiler settings also to be on the safe side. Everything is working perfectly fine for me.
您好,我安装了 Eclipse 32 位,到目前为止在 mac Mountain lion 上运行得很好。
我在编译时找不到 Binary,但现在使用 32 位 Eclipse 没有问题。
Hi I installed Eclipse 32 bit and works perfectly so far on mac Mountain lion.
I was getting the Binary not found on compile but now with the 32 bit Eclipse no problem.
只需从项目中删除“调试”文件夹,然后运行“构建项目”即可。
Simply remove "Debug" folder from your project and then run "Build project".