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

Reply via email to