I'm on Ubuntu 12.04 64 bits and I'm trying to get a game (GTA SA) working in wine, but it keeps crashing. After reading error logs it seems I needed some 32 bit versions of gstreamer, probably to play the intro video. I already have ia32-libs
, because I read somewhere I will need that in order to run 32 bit software. I first tried:
sudo apt-get install gstreamer0.10-ffmpeg:i386
Which returns:
gstreamer0.10-ffmpeg:i386 : Depends: libavcodec53:i386 (>= 4:0.7.3-1) but it is not going to be installed or
libavcodec-extra-53:i386 (>= 4:0.7.3-1) but it is not going to be installed
And it also depends on libavformat, libpostproc and libswscale with about the same error. So I kept searching and found a nice tool, getlibs, which allows you to install 32 bit libraries. I think it just places them in the /usr/lib32
directory, which probably isn't the best way to do this, but I tried it anyway.
So I installed the 32 bit libraries with getlibs which wine was complaining about. Now I got different errors, basically the 32 bit library is referencing other libraries which it now can't find. For example one of the errors says:
Failed to load plugin '/usr/lib32/gstreamer-0.10/libgstffmpeg.so': libavformat.so.53: cannot open shared object file: No such file or directory
So my initial thought was correct, since it now uses the 32 bit version. Now I was trying to figure it out with ldd to see where the library references other libraries:
# This one is fine
ldd /usr/lib/gstreamer-0.10/libgstffmpeg.so | grep avformat
libavformat.so.53 => /usr/lib/x86_64-linux-gnu/libavformat.so.53 (0x00007f8314181000)
# This one isn't
ldd /usr/lib32/gstreamer-0.10/libgstffmpeg.so | grep avformat
libavformat.so.53 => not found
So indeed, libgstffmpeg.so can't find the correct libavformat.so. I tried installing the 32 bit version of libavformat with getlibs again, which placed it in /usr/lib32/i386-linux-gnu/libavformat.so
. But ldd still tells me it can't find libavformat. Then I tried to make a symbolic link in the same directory but named it libavformat.so.53
and even made a symlink to `/usr/lib/i386-linux-gnu/libavformat.so.53', but both give me the same error.
Now I am sure this really isn't the correct way to go, but I didn't know the right way to do it. So what is the correct way to do this, or does gstreamer0.10-ffmpeg simply doesn't have 32 bit or multilib support? And how can I find out what the directory is, where libgstffmpeg (or any library I guess) checks for it's 32 bit libs it is referencing?
Best Answer
Try:
If you see no output, this is because the linker cache (read the first paragraph of
man ldconfig
, and about the-p
switch) does not reference /usr/lib32. I checked a ubuntu 12.04 system and that is not in there by default. You can add it to:/etc/ld.so.conf.d/libc.conf
which may contain just/usr/local/lib
. Run justldconfig
, then the -p command from above. You should see the stuff in /usr/lib32; now try your ldd on the 32-bit gstreamer lib again.