On Tue, Jun 16, 2020 at 06:18:14PM +0200, Christophe de Dinechin wrote: > In util/Makefile.objs, there is a setting for dbus.o-libs. > Trying to copy-paste that to add a library for module.o that was was > not otherwise linked yields link errors on a number of binaries, > e.g. qemu-ga, with unsatisfied symbols in libqemuutil.a(module.o). > The reason is that library dependencies are not propagated to the .a > files automatically. > > Adding a call to extract-libs to get the libraries for the two .a > files that are used elsewhere. > > Signed-off-by: Christophe de Dinechin <dinec...@redhat.com> > --- > Makefile | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/Makefile b/Makefile > index 2e93068894..5fb0c78a0b 100644 > --- a/Makefile > +++ b/Makefile > @@ -598,6 +598,8 @@ Makefile: $(version-obj-y) > ###################################################################### > # Build libraries > > +libqemuutil.a-libs += $(call extract-libs, $(util-obj-y) $(trace-obj-y) > $(stub-obj-y)) > +libvhost-user.a-libs += $(call extract-libs, $(libvhost-user-obj-y) > $(util-obj-y) $(stub-obj-y)) > libqemuutil.a: $(util-obj-y) $(trace-obj-y) $(stub-obj-y) > libvhost-user.a: $(libvhost-user-obj-y) $(util-obj-y) $(stub-obj-y)
I wonder if there is GNU Make syntax to avoid duplicating the dependencies of libqemuutil.a and libvhost-user.a? Another thing I wonder about: the purpose of the .a files is to compile all object files and only link those .o files needed by the program (i.e. a subset of the .a file). Now that libqemuutil.a-libs is defined, do programs using libqemuutil.a link libs required by .o files that aren't being used? For example, say we had util/mp3encoder.o which depends on an MP3 encoder library. A utility like qemu-img does not depend on mp3encoder.o from libqemuutil.a. Therefore -lmp3enc or whatever shouldn't be on qemu-img's linker command-line.
signature.asc
Description: PGP signature