|
 |
On 1/28/2016 9:49 AM, clipka wrote:
>
>> About the ordering of libraries, when libA would need some part of libB,
>> libA must appears before libB. But if libB needs also some code of libA,
>> you got a problem of circular dependencies which can make it difficult
>> to solve: the linker will extract only the needed symbol from libA due
>> to the previous code (main or other *.o object) and get a list of needed
>> symbols. then it close forever libA and search libB to extract the still
>> needed symbols and might get more needed symbols too. rinse & repeat for
>> the next library until the end of the list.
>
> Are you sure that's what's happening? Because last time I checked, there
> is no problem linking two libraries into one executable even if they
> recursively call each other. And I don't think it can't get any more
> interlocked than that.
Huh. I would have agreed with clipka; I thought this problem was solved
long ago. But I just ran into this situation with my animation
controller. I was refactoring my networking and the lower layer must be
on the link line after the higher layer that calls it. It took me awhile
to think of reordering the link line...
"What do you mean void AgentRead(SOCKET) not found?? It's been there for
20 years!"
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)
Post a reply to this message
|
 |