/usr/lib/libavcodec.so.52: undefined symbol: av_lfg_init

lve: symbol lookup error: /usr/lib/libavcodec.so.52: undefined symbol: av_lfg_init

nearly all of the video editing apps I’ve tried come up with this same error, using lve as an example here.

more info to come as I get into fixing this: any hints ?

Output from:

rpm -qf /usr/lib/libavcodec.so.52 /usr/lib/libavutil.so.49

?

rpm -qf /usr/lib/libavcodec.so.52 /usr/lib/libavutil.so.49
outputs:

libavcodec52-0.4.9.15319svn-20080914.pm.0
libffmpeg0-0.4.9.13782-1.1

was missing: libavutil.so.49, so I added that and it works! thanks - should have known that.

you just solved a great many issues for me. gracias.

Thank you that helped when I updated pinky tagger and it would not work any more.

Now I need to try and understand how you knew this…

What I mean is how do you know about the missing file there is a jump some prior knowledge of the interdependence of these files?

Requires some knowledge about linking.
In general this problem should never happen. But since we have the Packman and Videolan repos both packaging the same libraries…

I first run “nm -D /usr/lib64/libavcodec.so.52 | grep av_lfg_init” to verify my version of libavcodec also needs the av_lfg_init symbol.
The output is “U av_lfg_init”, the ‘U’ means the symbol is indeed undefined.
That means that libavcodec needs of another library that defines the av_lfg_init symbol.

The name of the symbol, “av_lfg_init” doesn’t helps to know which library could containt it. But with “objdump -p /usr/lib64/libavcodec.so.52.0.0 | grep NEEDED” we obtain

  NEEDED               libavutil.so.49
  NEEDED               libz.so.1
  NEEDED               libm.so.6
  NEEDED               liba52.so.0
  NEEDED               libamrnb.so.3
  NEEDED               libamrwb.so.3
  NEEDED               libdirac_encoder.so.0
  NEEDED               libfaac.so.0
  NEEDED               libfaad.so.0
  NEEDED               libgsm.so.1
  NEEDED               libmp3lame.so.0
  NEEDED               libschroedinger-1.0.so.0
  NEEDED               libpthread.so.0
  NEEDED               libtheora.so.0
  NEEDED               libvorbisenc.so.2
  NEEDED               libvorbis.so.0
  NEEDED               libx264.so.65
  NEEDED               libxvidcore.so.4
  NEEDED               libc.so.6

The symbol MUST be in one of these libraries. And since the symbol name starts with “av” the first library you look at is libavutil.so.49.
Now I run “nm -D /usr/lib64/libavutil.so.49 | grep av_lfg_init” and obtain “00000000000037b0 T av_lfg_init”, meaning that the symbol is indeed in this library.

Since weaponsofwar got that error that means that his libavcodec.so library was compiled against a libavutil.so with the symbol… but he has a different libavutil.so version installed, one without the symbol.

From the output of “rpm -qf” we can see he had libavcodec from Packman and libavutil (previously contained in libffmpeg0) from Videolan.
Once he installed both libraries from the same repo everything started to work.

If you don’t know anything about programming you are not supposed to know this. There are programmers than don’t…

Thank you for the explanation. I understand what the packager wrote to me a little better now. The Same problem a conflict between videolan and Packman supplied libraries. I am now disabling the videolan sites and hoping the that it does not reoccur somewhere else.

Thank you for taking the time with a detailed explanation.