6

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)?

2
  • 1
    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. Dec 13, 2010 at 17:11

3 Answers 3

6

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

murmur and mumble homepage

1
  • 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.
    – Mr Fox
    Dec 13, 2010 at 17:31
4

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.

1

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.

4
  • Just a small problem here: most decompiled programs don't compile again without modification - decompilers aren't that good :( Apr 29, 2013 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, 2015 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, 2015 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, 2015 at 18:26

You must log in to answer this question.

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