qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] cannot build qemu with "--static" configure option


From: Mr Dash Four
Subject: Re: [Qemu-devel] cannot build qemu with "--static" configure option
Date: Wed, 23 Nov 2011 14:39:04 +0000
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23


./configure --target-list="x86_64-softmmu arm-softmmu x86_64-linux-user
arm-linux-user armeb-linux-user" --disable-kvm --disable-strip --disable-xen
--disable-spice --disable-werror --static

then "make V=1". It fails with the following error:

You're trying to build the -softmmu targets with --static here too
(which means we try to compile a bunch of things that were never intended
to be run as static executables that way).
I see, noted!

You're probably better off doing two separate configure and build
runs, one with just the -linux-user targets and --static, and the other
with just the -softmmu targets (and no --static).
In other words:

1. ./configure --target-list="x86_64-linux-user arm-linux-user armeb-linux-user" --disable-kvm --disable-strip --disable-xen --disable-spice --disable-werror --static && make V=1 2. ./configure --target-list="x86_64-softmmu arm-softmmu x86_64-linux-user arm-linux-user armeb-linux-user" --disable-kvm --disable-strip --disable-xen --disable-spice --disable-werror && make V=1

Having said that, building arm-softmmu with --static works for me:
which version of QEMU are you trying to build? (we might have fixed
this in the 1.0 release candidate, so that's worth testing.)
OK, this is the problem I am facing: I have quad core machine with Fedora Core on it. I am using debootstrap (Fedora's own package!) to build chrooted environment for arm using binfmt_misc's unique capabilities to point to a statically-built qemu-arm to be used when debootstrap executes various arm-based binaries in the chrooted environment.

Now, in *all* Fedora-supplied QEMU packages there are no statically-built executables, just qemu-[arch] and qemu-[arch]-system - both of which are dynamically linked. That is of no use to me whatsoever because when deboostrap chroots to the arm-based root the libraries qemu needs in order to run won't be there!

So, what I am trying to do is build static qemu - "qemu-arm-static", which is "self-contained" and by placing it in my arm-based chroot and configuring binfmt_misc (via /proc/sys) to point to it, this would allow debootstrap to do its work without problems.

It is worth noting that Debian have such statically-linked qemu package already (the package is called qemu-user-static if I am not mistaken), but when I use Debian's own qemu-arm-static for my host arch - x86_64, I get a very weird errors during debootstrap, so I am trying to build a "native" (i.e. Fedora-based) qemu static to see if I get the same error in order to isolate the problem.

I have tried to build/implement this by tweaking the source rpm (the .spec file in particular) which comes with the latest QEMU version distributed by Fedora (0.15-2 if I am not mistaken), but there are so many ugly hacks in there, that I soon abandoned this idea and thought it would be easier if I just unpack the source archive, apply the Fedora-supplied patches and manually execute my custom ./configure and then "make" so that I end up with qem-arm-static (or similarly-named executable file) and use this instead.

The problem I am having, as evident from my initial post, is that ld is going mad about "missing" libraries, even though the build succeeds if I remove the "--static" option. I will try what you have suggested to see if it works, but I wanted to know whether I am doing something fundamentally wrong here... I appreciate your input Peter!




reply via email to

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