当GCC链接到一个共享库时,soname被存储了吗?

当GCC链接到一个共享库时,soname被存储了吗?,gcc,shared-libraries,Gcc,Shared Libraries,如果在共享库中编译和链接,它是否将库的soname存储在二进制文件中的某个位置,以便知道要链接到哪个库?换句话说,如果我链接liba.so的1.0.0版本,然后我将我的库更新为2.0.0,ABI/API发生了变化,现在我指向liba.so的sym链接指向2.0.0版本,二进制文件还会知道如何查看liba.so.1吗?换句话说,它是否将链接库的特定soname存储在二进制文件中?是的,您可以使用ldd查看二进制文件的依赖关系 自己试试ldd/bin/bash 在我的机器上打印 linux-vdso

如果在共享库中编译和链接,它是否将库的soname存储在二进制文件中的某个位置,以便知道要链接到哪个库?换句话说,如果我链接liba.so的1.0.0版本,然后我将我的库更新为2.0.0,ABI/API发生了变化,现在我指向liba.so的sym链接指向2.0.0版本,二进制文件还会知道如何查看liba.so.1吗?换句话说,它是否将链接库的特定soname存储在二进制文件中?是的,您可以使用ldd查看二进制文件的依赖关系

自己试试ldd/bin/bash

在我的机器上打印

linux-vdso.so.1 =>  (0x00007fff10dff000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00007f2237acb000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f22378c7000)
libc.so.6 => /lib/libc.so.6 (0x00007f2237564000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2237d25000)