Question

I have a .NET application that runs on Linux, using Mono. I want to avoid users having to install Mono, so am using mkbundle. I am running mkbundle on an x86 machine, with the expectation of the resulting binary being able to run on x64 machines:

mkbundle MyApp.exe *.dll -o MyApp

I can then run the resulting application on the build machine with `./MyApp'

However, when I copy it to an x64 machine (and make it executable) it won't run, just outputting:

bash: ./MyApp: No such file or directory

If I try ldd I get:

not a dynamic executable

Shouldn't binaries built for x86 run on x64 systems?

Was it helpful?

Solution

I'm rather new to Linux, and it seems x86/x64 isn't quite as straightforward as it is on Windows, as many x64 Linux distributions don't ship with the capability to run 32-bit binaries.

After installing 32-bit libraries on the x64 machine, the x86 code will execute as expected (e.g. on Ubuntu 7.04, apt-get install ia32-libs.

While this works, as I need to target a number of distributions I've decided to just create separate builds for x86 and x64 instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top