Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How does linker find shared library without 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?

like image 671
fana Avatar asked Jan 22 '23 04:01

fana


1 Answers

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.

like image 78
dimba Avatar answered Jan 26 '23 02:01

dimba