From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RTDyl-00088e-TK for qemu-devel@nongnu.org; Wed, 23 Nov 2011 09:39:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RTDyg-00066e-4B for qemu-devel@nongnu.org; Wed, 23 Nov 2011 09:39:15 -0500 Received: from mail-yw0-f45.google.com ([209.85.213.45]:43532) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RTDyf-00066P-UR for qemu-devel@nongnu.org; Wed, 23 Nov 2011 09:39:10 -0500 Received: by ywf7 with SMTP id 7so1664961ywf.4 for ; Wed, 23 Nov 2011 06:39:09 -0800 (PST) Message-ID: <4ECD0588.4050906@googlemail.com> Date: Wed, 23 Nov 2011 14:39:04 +0000 From: Mr Dash Four MIME-Version: 1.0 References: <4ECCEDFF.1000303@googlemail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] cannot build qemu with "--static" configure option List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: qemu-devel@nongnu.org >> ./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!