2013-06-06 64 views
1

如果您在共享庫中編譯和鏈接,它是否將二進制文件的soname存儲在二進制文件的某處,以便它知道要鏈接到哪一個?換句話說,如果我鏈接到版本1.0.0的liba.so,然後我更新我的庫到2.0.0和ABI/API已經改變,現在我的sym指向liba.so的鏈接指向2.0.0版本這個二進制文件還會知道看liba.so.1嗎?換句話說,它是否以二進制形式存儲鏈接庫的具體soname當GCC鏈接共享庫時,soname是否存儲?

回答

0

是的,您可以使用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)