Say I have libA. It depends on, for example, libSomething for the simple fact that a non-inline method of libA makes a call to a method in libSomething.h. How does the dependency link up in this case? Does libA have to statically link to libSomething when it is compiled, or will a user of libA (an application using libA) need to link to both libA and libSomething?
Thanks
Static linking is just copying the whole items (functions, constants, etc) into the resulting executable. If a static library’s code contains references to some shared library items, these references will become dependencies in the resulting executable. The same holds if you link a library instead of executable.
This thread discusses how it happens in Linux.