Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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?

share|improve this question

1 Answer 1

Try:

ldconfig -p | grep lib32

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 just ldconfig, 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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.