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