链接器在没有指定SONAME的情况下如何找到共享库

4
如果我创建一个没有SONAME的共享库,就像这样:
gcc -shared libfoo.o -o libfoo.so

如果我要链接共享库,链接器是如何找到我的共享库的呢?

链接器是否将文件名 libfoo.so 视为默认的 SONAME 呢?

1个回答

9

我认为你是正确的。以下是ld手册中的内容:

-soname=name

当创建一个ELF共享对象时,将内部DT_SONAME字段设置为指定的名称。当可执行文件与具有DT_SONAME字段的共享对象链接时, 当可执行文件运行时,动态链接器将尝试加载由DT_SONAME字段指定的共享对象,而不是使用链接器给出的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接