On 02/19/16 16:38, Kevin O'Connor wrote:
On Thu, Feb 18, 2016 at 05:49:39PM +0200, XJDHDR wrote:
Greetings I am currently trying to compile Seabios for Arch Linux ARM and I've encountered an error during the compilation
SeaBIOS implements an x86 legacy BIOS. As such, it requires an x86 compiler. So, you need to either compile on an x86 machine or setup and use an x86 cross compilation toolchain.
Thank you for the response Kevin. Correct me if I'm wrong but won't x86 binaries not work on an ARM system as ARM processors don't understand x86.
I am attempting to get QEMU compiled and working on my ARM system and SeaBIOS is a dependency for QEMU, hence my need to have the former compiled for ARM. Do you know if QEMU on ARM is okay with SeaBIOS' binaries being x86? If so, I think this will make things a lot easier for me.
QEMU uses SeaBIOS when it emulates an x86 machine. SeaBIOS is always compiled with an x86 compiler.
To repeat the same thing, just in a different coating:
SeaBIOS is always built with an x86 compiler -- if you are on a non-x86 build host, then you either need a cross compiler to build it, or a working virtual machine that has (emulated) x86 architecture, and build SeaBIOS within it natively.
Once you have it built, it is usually packaged up (for QEMU's purposes) as a "noarch" package -- installable on any kind of host. That's because you never run SeaBIOS natively on the host. On the host, the SeaBIOS binaries are only *data*.
QEMU loads the SeaBIOS binary (+ the SeaVGABIOS oprom) from the host data files, if it emulates or virtualizes an x86 target. SeaBIOS runs within the guest.
Note, if you don't build qemu-system-i386 / qemu-system-x86_64 from QEMU, only qemu-system-arm / qemu-system-aarch64, then you won't need SeaBIOS at all. The packaging of QEMU might not reflect this on your distro, but that's a packaging problem then.