On Thu, Nov 18, 2004 at 05:36:20PM +0200, Andrei Bulava wrote: > Вот и имеем изменение ABI в то время как API "новой" libfoo.so есть > надмножество API "старой" libfoo.so: теперь приложение, динамически > слинкованное со "старой" libfoo.so, при запуске с "новой" libfoo.so > будет иметь неразрешённый символ - ибо двоичный файл "новой" библиотеки > вообще не содержит функции bar ( int ) !!! И наоборот - если > перекомпилировать приложение с "новой" libfoo.so - оно не запустится со > старой, теперь из-за отсутствия функции bar ( int, int ) !!! Это, скажем, в C++ всё будет так хорошо, как вы говорите, и при изменении сигнатуры функции dynamic linker не даст этому безобразию запуститься. С библиотеками и программами на C всё гораздо хуже, поскольку сигнатуры функций содержат лишь имена. При этом вызванная старой программой функция из новой библиотеки в вашем примере в качестве второго аргумента получит мусор со стека, со всеми вытекающими. -- ldv