Gcc 静态库中来自共享库的未定义引用

Gcc 静态库中来自共享库的未定义引用,gcc,linker,Gcc,Linker,例如,我有3个不同的实例: 具有未定义引用“get_object”和定义的共享库 “x” 定义为“获取对象”、“y”的静态库 具有未定义引用“x”和“y”的二进制文件对象文件 当我尝试编译并链接所有这些东西时,链接器可以解析所有这些符号,对吗 我担心的重点是符号“获取对象”。 链接器能否在共享库和静态库之间解析此类引用?静态库只是对象文件(其成员)的聚合,可能带有生成的索引 在Linux上,如果您将一个对象文件(3)链接到一个静态库(2)libee.a和一个共享库(1)libyz.so,并且在时

例如,我有3个不同的实例:

  • 具有未定义引用“get_object”和定义的共享库 “x”
  • 定义为“获取对象”、“y”的静态库
  • 具有未定义引用“x”和“y”的二进制文件对象文件
  • 当我尝试编译并链接所有这些东西时,链接器可以解析所有这些符号,对吗

    我担心的重点是符号“获取对象”。
    链接器能否在共享库和静态库之间解析此类引用?

    静态库只是对象文件(其成员)的聚合,可能带有生成的索引

    在Linux上,如果您将一个对象文件(3)链接到一个静态库(2)libee.a和一个共享库(1)
    libyz.so
    ,并且在时间上传递
    -rdynamic
    (即
    gcc-rdynamic foo.o libee.a libyz.so-o myprog
    gcc-rdynamic-foo.o-lee-lyz-o myprog
    )然后将在动态链接时解析
    get\u对象
    名称(在
    ld linux.so


    有关详细信息,请参见wikipage和Drepper的论文:。还可以阅读Levine的书:&手册页。

    3。是一个对象文件,而不是二进制可执行文件