Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is it possible to convert/recompile an already compiled x86 binary into an ARM binary?

I'm using a BeagleBoard with a command-line Ubuntu (Maverick) and want to run a Ventrilo server but the x86 executable they supply cannot be run on the hardware as far as I can tell (most likely due to differing architecture).

Unfortunately I don't have access to the source to allow me to recompile it natively.

If not, is there any other way I can get the binary to run (emulation for example)?

share|improve this question
Many years ago, there were emulators of older x86 such as 80286 DOS machines for Acorn Risc OS machines. That might be a starting point to see if those involved have progressed the idea to live on today. Other than that it's an interesting question given ARM's apparent move into the server space, displacing x86 binary apps, such an emulator might facilitate the displacement of x86 in this area. – therobyouknow Dec 13 '10 at 17:11
up vote 5 down vote accepted

You may want to switch to an alternative software available natively on your architecture, murmur and mumble come to mind.

murmur and mumble homepage

share|improve this answer
Great, thank you, I didn't know this existed. Might take some convincing to get the others using it but I think the fact that it's the highest quality coupled with the lowest latency helps massively. – Ryall Dec 13 '10 at 17:31

Short version : if you don't have the source code then no.

Long version : you can use qemu (or kvm or virtualbox, etc) and use a minimal x86 emulated system to run the server.

share|improve this answer

I guess the answer is "maybe". Usually you can de-compile an executable file, if you know enough about it. If you decompile the code to a language that has an ARM compiler, and the libraries required to compile that binary to your ARM platform, than it should be possible.

For example: If your Ventrilo server can be decompiled into C source code, and this source code is ANSI Standard, you may have enough support with your ARM compiler to recompile the code.

I really don't know if you can do it legally, though, since you would be reverse-engineering a software that you are not the owner.

share|improve this answer
Just a small problem here: most decompiled programs don't compile again without modification - decompilers aren't that good :( – Filip Haglund Apr 29 '13 at 15:14
"if you know enough about it" covers a few years of microprocessor design, assembly, instruction sets, hex editors, etc... – Basic Nov 26 '15 at 17:37
Well, in the specific case OP stated, he has a X86 compiled program. I'm assuming that the number of X86 decompilers available is good. I'm also assuming that since Ventrilo is used for communication, it may not leverage some high-level bytecode language such as Java or C#. So it may decompile well enough to C++ / C. And X86 assembly is well understood, and instructions may be ported/simulated on other architectures. It may not be easy, but it's definitely doable. – Machado Nov 27 '15 at 18:24
Another 2 cents: I based the answer on my personal experience porting Lua to PalmOS, a few years ago. Lua was (is) 100% done in ANSI-C, but PalmOS didn't have an ANSI-C compatible compiler. I had to write a small translation layer without knowledge of Motorola 68k architecture and/or great knowledge of C. Thankfully the "thing" worked, and I assume that's more of Lua's fault than my code's merit. :) – Machado Nov 27 '15 at 18:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .