On Sat, Dec 30, 2017 at 06:51:42AM +0300, Alexey Tourbin wrote: [...] > Два механизма были сделаны ортогональными вовсе не по недомыслию, а и > из-за сложной и компромиссной семантики разрешения версионированных > символов. Ясно, что неверсионированный символ может разрешаться в > версионированный: sym -> sym@ABI, при условии, что символ sym@ABI > дефолтный (так что когда в библиотеке впервые появляется > версионирование, старые программы остаются работать без пересборки). Более того, неверсионированный символ sym может разрешаться как в неверсионированный символ, так и в версионированный sym@ABI без каких-либо дополнительных условий; ld.so выберет из того, что есть в библиотеке, какую-нибудь реализацию sym достаточно произвольным образом. Если в библиотеке окажется несколько реализаций sym разных версий, то ld.so свяжет неверсионированный sym с одной из них. Если в библиотеке, помимо весрионированных sym, окажется и неверсионированная реализация, то ld.so свяжет неверсионированный sym либо с неверсионированной реализацией, либо с одной из версионированных. -- ldv