Paolo Bonzini <pbonz...@redhat.com> writes:

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

Sounds good to me!

Reply via email to