qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] building for an arm host on an x86_64 machine [was: qem


From: Peter Maydell
Subject: Re: [Qemu-devel] building for an arm host on an x86_64 machine [was: qemu builds on arm hosts]
Date: Sat, 19 Apr 2014 10:53:44 +0100

On 19 April 2014 00:28, New B <address@hidden> wrote:
> I just realized that the original subject of my question was not accurate.
>
> I am trying to compile qemu to run on an arm host.  I don't have an arm host 
> yet.  Until I get one, I am just trying to build and link it on an x86_64 
> ubuntu machine.  (If I am already out of bounds at this point as I would need 
> a different toolchain, I would appreciate pointers)

> Qemu configuration
> ./configure --cpu=arm --target-list=arm-softmmu --disable-vnc --disable-sdl 
> --disable-virtfs --disable-brlapi --disable-rdma --disable-libusb 
> --disable-usb-redir --enable-pie

This configure line is garbage: you're forcing it to try to
build as if for an ARM host but you're not telling it to
use an ARM cross compiler so it's building with the x86
compiler and this will never work. Don't try to specify --cpu
manually.

You seem to be confusing several things here. There are
three different systems you need to care about in the
cross compilation setup you're trying to do:
 (1) the build system, where you do your compilation
 (2) the host system, where the QEMU binaries you build
      are going to run
 (3) the guest system, what you want to actually emulate

For you the build system is x86-64, and the host system is
ARM. I'm not sure what you want the guest system to be.
--target-list is where you configure which guest system;
it seems unlikely you wanted to run ARM guests on an ARM
host, but maybe you do.

For cross compile you need to pass configure the --cross-prefix
argument to tell it what your compiler is, for instance:
--cross-prefix=arm-linux-gnueabihf-
The correct argument depends on what your cross toolchain's
command names are.

If you don't already have a working cross compilation
environment (including cross versions of the zlib, glib
and other libraries QEMU needs) you're going to have to
go and set that up first. That's a complicated process; maybe
your Linux distribution will have a setup to do it, maybe not.
In any case it's not something that I can really advise on.
It also needs to be a cross setup that targets the library
versions that you're going to be running on your host system.

It's almost always much simpler just to build on the host
system. Since there's nothing you can do with the cross
compiled binaries unless you already have a host system,
I think what you need to do first is get and set up the ARM
hardware you're going to use. Then just build natively on that.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]