On Mon, 2014-06-16 at 16:15 +0200, Paolo Bonzini wrote: > Il 16/06/2014 15:58, Sean Bruno ha scritto: > > On Mon, 2014-06-16 at 06:55 -0700, Sean Bruno wrote: > >>>> Sean, could you show the configure command line? > >>> > >>> Also please attach the "make V=1" output and config-host.mak file. > >>> > >>> Paolo > >>> > >>> > >> > >> I'm using: > >> > >> ./configure --static --target-list="i386-bsd-user sparc-bsd-user > >> sparc64-bsd-user x86_64-bsd-user" > >> > >> Log: > >> http://people.freebsd.org/~sbruno/qemu_build_fail.txt > >> > >> sean > >> > >> > > > > Also, configure output > > > > http://people.freebsd.org/~sbruno/qemu_user_configure.txt > > So this is happening because the $(sort) removes the ordering between > libraries and breaks static linking. Your patch likely does nothing > except adding more copies of the libraries, which lets the linker work. > > The executable that breaks is qemu-nbd, which I suspect you couldn't > care less about. > > The bug remains, and ought to be fixed, probably like this: > > diff --git a/rules.mak b/rules.mak > index dde8e00..50b305e 100644 > --- a/rules.mak > +++ b/rules.mak > @@ -22,7 +22,7 @@ QEMU_DGFLAGS += -MMD -MP -MT $@ -MF $(*D)/$(*F).d > # Same as -I$(SRC_PATH) -I., but for the nested source/object directories > QEMU_INCLUDES += -I$(<D) -I$(@D) > > -extract-libs = $(strip $(sort $(foreach o,$1,$($o-libs)))) > +extract-libs = $(foreach o,$1,$($o-libs)) > expand-objs = $(strip $(sort $(filter %.o,$1)) \ > $(foreach o,$(filter %.mo,$1),$($o-objs)) \ > $(filter-out %.o %.mo,$1)) > > but the other question is: do we care about static linking of anything > except the user-mode emulators? Should --static automatically imply > --disable-tools --disable-system? > > Paolo
Seems like this works for me on FreeBSD with my test case. sean