Greetings
I am currently trying to compile Seabios for Arch Linux ARM and I've encountered an error during the compilation that appears to be caused by a misconfiguration in the file downloaded from here: http://code.coreboot.org/p/seabios/downloads/get/seabios-1.9.0.tar.gz
I have attached a log containing the entire stdout and stderr stream output for Arch Linux's makepkg command but I think these might be the only lines of interest: Compile checking out/src/misc.o cc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-stack-protector -fstack-check=no -DMODE16=0 -DMODESEGMENT=0 -c src/misc.c -o out/src/misc.o cc: error: unrecognized argument in option '-march=i386' cc: note: valid arguments to '-march=' are: armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5e armv5t armv5te armv6 armv6-m armv6j armv6k armv6s-m armv6t2 armv6z armv6zk armv7 armv7-a armv7-m armv7-r armv7e-m armv7ve armv8-a armv8-a+crc iwmmxt iwmmxt2 native cc: error: unrecognized command line option '-m32' cc: error: unrecognized command line option '-mregparm=3' cc: error: unrecognized command line option '-mpreferred-stack-boundary=2' cc: error: unrecognized command line option '-minline-all-stringops' Makefile:133: recipe for target 'out/src/misc.o' failed
The files Arch Linux uses to compile Seabios can be found here if needed: https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/s... Can anyone help me get this error fixed? If a developer reads this and there is a bug in the code, would it be possible to fix it? Help will be greatly appreciated.
Kind regards Xavier de Rauville
On Wed, Feb 17, 2016 at 06:14:25PM +0200, Xavier de Rauville wrote:
Greetings
I am currently trying to compile Seabios for Arch Linux ARM and I've encountered an error during the compilation that appears to be caused by a misconfiguration in the file downloaded from here: http://code.coreboot.org/p/seabios/downloads/get/seabios-1.9.0.tar.gz
I have attached a log containing the entire stdout and stderr stream output for Arch Linux's makepkg command but I think these might be the only lines of interest: Compile checking out/src/misc.o cc -Iout/ -Isrc -Os -MD -g -Wall -Wno-strict-aliasing -Wold-style-definition -Wtype-limits -m32 -march=i386 -mregparm=3 -mpreferred-stack-boundary=2 -minline-all-stringops -fomit-frame-pointer -freg-struct-return -ffreestanding -fno-delete-null-pointer-checks -ffunction-sections -fdata-sections -fno-common -fno-merge-constants -fno-stack-protector -fstack-check=no -DMODE16=0 -DMODESEGMENT=0 -c src/misc.c -o out/src/misc.o cc: error: unrecognized argument in option '-march=i386'
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.
-Kevin
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.
-Kevin
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.
Kind regards Xavier de Rauville
Sent from my BlackBerry 10 smartphone.
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.
-Kevin
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.
-Kevin
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.
-Kevin
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.
Laszlo