How to determine inter-library dependencies?

前端 未结 2 1932
盖世英雄少女心
盖世英雄少女心 2021-01-13 04:21

My project consists of a couple of static libraries, which are linked together in a final step. Now I have the problem, that the link order of the library is important (othe

2条回答
  •  清酒与你
    2021-01-13 05:14

    Another option to link libraries with circular dependencies is to use a special linker option for that. Man ld:

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

    It is always cleaner to eliminate the circular dependencies though.

提交回复
热议问题