如果我创建一个没有SONAME的共享库,就像这样:
gcc -shared libfoo.o -o libfoo.so
如果我要链接共享库,链接器是如何找到我的共享库的呢?
链接器是否将文件名 libfoo.so
视为默认的 SONAME 呢?
gcc -shared libfoo.o -o libfoo.so
如果我要链接共享库,链接器是如何找到我的共享库的呢?
链接器是否将文件名 libfoo.so
视为默认的 SONAME 呢?
我认为你是正确的。以下是ld手册中的内容:
-soname=name
当创建一个ELF共享对象时,将内部DT_SONAME字段设置为指定的名称。当可执行文件与具有DT_SONAME字段的共享对象链接时, 当可执行文件运行时,动态链接器将尝试加载由DT_SONAME字段指定的共享对象,而不是使用链接器给出的文件名。