./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!