I\'ve got caught in the not-so-sunny world of cross-compilation.
I\'m trying to compile a simple hello world application for my BeagleBone Black (which runs a TI Cortex-
How to identify the problem?
file cross_compiled_executable
Contains something like:
interpreter /lib/ld-uClibc.so.0
and the problem is that that file does not exist on the target.
How to solve the problem?
Use a proper compiler, either:
use a native compiler on the target. But generally targets are much slower than your host, and space constrained, so you likely don't want to do this.
You might also be able to use a functional emulator such as QEMU to build, and then only run the programs on a slower platform, e.g. gem5 or a slow board.
Just hacking up the interpreter is potentially not enough, notably you have to ensure binary compatibility between the program and the target libc, or program and kernel interfaces (syscalls, /proc, etc.) if you try to use -static (the target kernel might be too old and not contain the required interfaces). The only robust solution is to use the correct toolchain.