Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Launch Failed. Binary Not Found." Snow Leopard and Eclipse C/C++ IDE issue

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!

like image 509
Alex Avatar asked Nov 03 '09 16:11

Alex


4 Answers

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 ].

like image 121
Viren Avatar answered Oct 16 '22 01:10

Viren


I had been getting the same message of

Launch Failed. Binary Not Found.

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.

like image 20
Charlie Avatar answered Oct 16 '22 01:10

Charlie


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"

like image 8
none Avatar answered Oct 15 '22 23:10

none


I'm running Mac OSX 10.6.8, and my Eclipse had the Cross GCC toolchain installed. So, I did this:

  1. Under the Properties for the project, select C/C++ Build -> Tool Chain editor.
  2. Change the Current toolchain from Cross GCC to MacOSX GCC.
  3. I also changed the Current builder to CDT Internal Builder. (I'm not sure if this mattered.)
  4. I left all the stuff under Settings alone.
  5. Rebuild. You should see a binary with the same name as your project in the Debug folder of your project.
like image 5
Evan McClure Avatar answered Oct 15 '22 23:10

Evan McClure