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 ?
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.