On Sun, May 17, 2009 at 07:43:41PM +0400, Valery V. Inozemtsev wrote: > [..] > > Пересобирать бинарники, собранные с неправильной версией libalsa, > > необходимо, иначе при вызовах функций snd_pcm_sw_params_*, для которых > > была установлена неправильная версия, они будут падать. > > $ readelf -a /usr/bin/aplay | grep snd_pcm_info_get_name@ > 3: 00000000 0 FUNC GLOBAL DEFAULT UND > snd_pcm_info_get_name@ALSA_0.9 (3) > > $ readelf -a /usr/lib/libasound.so.2 | grep snd_pcm_info_get_name@ > 1137: 00042e40 76 FUNC GLOBAL DEFAULT 12 > snd_pcm_info_get_name@@ALSA_0.9 > > как оно при этом работает? Тут как раз всё правильно. "@@" обозначает версию, используемую по умолчанию при сборке с этой библиотекой; у snd_pcm_info_get_name только одна реализация, с которой проблем вроде бы нет. Сравнивать в данном случае нужно вывод readelf -s $FILE | sed -ne '4,$p' | grep -v UNDEF | cut -c32- | LC_ALL=C sort -k5 для старой и новой libasound.so.2; различия GLOBAL/WEAK при этом не особо важны, а вот изменение версий существенно.