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

发布于 2024-09-30 03:39:36 字数 175 浏览 6 评论 0原文

如果我创建一个没有像这样的 SONAME 的共享库

gcc -shared libfoo.o -o libfoo.so

并链接到它, 链接器如何找到我的共享库?

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

if I create a shared library without a SONAME like this

gcc -shared libfoo.o -o libfoo.so

and link against it,
how does the linker find my shared library?

Is the filename libfoo.so considered as default SONAME by the linker?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぃ弥猫深巷。 2024-10-07 03:39:36

我认为你是对的。 ld 手册页内容如下:

-soname=名称

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

I think you're right. Here what ld man pages say:

-soname=name

When creating an ELF shared object, set the internal DT_SONAME field to the specified name. When an executable is linked with a
shared object which has a DT_SONAME field, then when the executable is run the dynamic linker will attempt to load the shared object
specified by the DT_SONAME field rather than the using the file name given to the linker.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文