On 15/08/2017 09:30, Markus Armbruster wrote: > The stupid fix is to repeat libraries until the link succeeds: > > test-util-obj-y = libqemuutil.a libqemustub.a libqemuutil.a > > You may have seen this with -lX11 if you're old enough. > > ld(1) suggests the linker can do it for us: > > -( archives -) > --start-group archives --end-group > The archives should be a list of archive files. They may be either > explicit file names, or -l options. > > The specified archives are searched repeatedly until no new > undefined references are created. Normally, an archive is searched > only once in the order that it is specified on the command line. > If a symbol in that archive is needed to resolve an undefined > symbol referred to by an object in an archive that appears later on > the command line, the linker would not be able to resolve that > reference. By grouping the archives, they all be searched > repeatedly until all possible references are resolved. > > Using this option has a significant performance cost. It is best > to use it only when there are unavoidable circular references > between two or more archives. > > Sticking '-Wp,-(' and '-Wp,-)' into the command line I get from make V=1 > doesn't work for me, though. > > The smart solution is not to have .a reference each other.
Nah, I think we should teach those new kids on the block about -lX11 instead. :) > Paolo, what do you think? Another possibility is to just merge the two static libraries into one. Paolo