例如,我有3个不同的实例:
我是否正确,当我尝试编译并将所有这些内容链接在一起时,链接器可以解析所有这些符号?
我担心的主要问题是符号“get_object”。 链接器可以解析共享库和静态库之间的这种引用吗?
答案 0 :(得分:2)
静态库只是目标文件(其成员)的集合,可能带有ranlib(1)生成的索引。
在Linux上,如果将目标文件(3)foo.o
与静态库(2)libee.a
和共享库(1)libyz.so
链接,并且传递{{ 1}}在link时间(即-rdynamic
或gcc -rdynamic foo.o libee.a libyz.so -o myprog
),然后dynamic linker会在动态链接时解析gcc -rdynamic foo.o -lee -lyz -o myprog
名称(get_object
)
详情在ELF wikipage和Drepper的论文中解释:How To Write Shared Libraries。另请阅读Levine的书:Linkers and loaders& ld(1)手册页。