undefined symbol: lame_encode_buffer_interleaved_int
I use a Debian unstable installation as my daily driver. That does sometimes come with pains when doing apt-get upgrade
. Like today. After upgrading and rebooting, suddenly (almost) everything that had to do with sound was broken. Pulseaudio wasn’t working, alsamixer wouldn’t start, Steam worked, but only after I removed the OS’s libsndfile1:i386
and libmp3lame0:i386
. The error I got from starting these applications in a shell always revolved around this:
/lib/x86_64-linux-gnu/libsndfile.so.1: undefined symbol: lame_encode_buffer_interleaved_int
libsndfile1
was refering to some function that it expected in libmp3lame0
, but could not find it. And, sure enough, looking at the shared library file for lame with nm -gD /lib/x86_64-linux-gnu/libmp3lame.so.0
, that symbol was not there. Someone else had the same problem, but their solution did not seem to apply to me - libmp3lame0
and libsndfile1
were installed and apt-get --reinstall install libmp3lame0 libsndfile1
also did nothing.
On a whim, I downloaded the latest versions of those packets (--reinstall
apparently does not do that, they were not in /var/cache/apt/archives
- how does that work?) and installed them with dpkg -i
.
And lo and behold, what do I get? dpkg
warns me that it is “downgrading” libmp3lame0
from 3.99.5
to 3.100-4
.
So there, problem solved. I did not have the latest version of libmp3lame0
, because dpkg
/apt
for some reason thought my old version was newer than what it found in the repos.