[x264-devel] Failing to load shared library libffms2.so.0

Markus Doits markus.doits at googlemail.com
Wed Jan 27 20:24:52 CET 2010


On 01/26/2010 07:24 PM, Sean McGovern wrote:
> Is it possible the copy in /usr/local/lib is corrupt or the wrong architecture (i386 vs. x86_64)?

Well, I think it's ok (I'm on ubuntu x86_64), is there any way to test
it for me?

/usr/local/lib$ file libffms2.so.0.0.0
libffms2.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1
(SYSV), dynamically linked, stripped


Now I see it's a linker-problem, because strace shows x264 not even
searching for ffms2 in /usr/local/lib:

$ strace `which x264` 2>&1 | grep ffms2
open("/lib/tls/x86_64/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/lib/tls/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/lib/x86_64/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/lib/libffms2.so.0", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/usr/lib/tls/x86_64/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib/tls/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/usr/lib/x86_64/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib/libffms2.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/lib/x86_64-linux-gnu/tls/x86_64/libffms2.so.0", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/tls/libffms2.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/lib/x86_64-linux-gnu/x86_64/libffms2.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/lib/x86_64-linux-gnu/libffms2.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/tls/x86_64/libffms2.so.0", O_RDONLY) =
-1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/tls/libffms2.so.0", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/x86_64/libffms2.so.0", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libffms2.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
writev(2, [{"/usr/local/bin/x264", 19}, {": ", 2}, {"error while loading
shared libra"..., 36}, {": ", 2}, {"libffms2.so.0", 13}, {": ", 2},
{"cannot open shared object file", 30}, {": ", 2}, {"No such file or
directory", 25}, {"\n", 1}], 10/usr/local/bin/x264: error while loading
shared libraries: libffms2.so.0: cannot open shared object file: No such
file or directory


I never had such problems with local libs before, x264 is the first
thing going crazy. I'll ask on ubuntu-forums about the linker, maybe my
system is the error, not x264...



> -----Original Message-----
> From: Markus Doits <markus.doits at googlemail.com>
> Date: Tue, 26 Jan 2010 18:34:23 
> To: Mailing list for x264 developers<x264-devel at videolan.org>
> Subject: [x264-devel] Failing to load shared library libffms2.so.0
> 
> Hello,
> 
> I'm having problems with x264-linking (again). I just updated
> ffmpegsource and noticed they changed their libname to lowercase.
> Allright, so i patched x264 to use it (since it did not recognize it yet):
> 
> diff --git a/configure b/configure
> index 9f04a18..9cd1fe8 100755
> --- a/configure
> +++ b/configure
> @@ -444,14 +444,14 @@ fi
>  if [ "$ffms_input" = "auto" ] ; then
>      ffms_input="no"
>      if [ "$lavf_input" = "yes" ] ; then
> -        if cc_check ffms.h -lFFMS2 "FFMS_DestroyVideoSource(0);" ; then
> +        if cc_check ffms.h -lffms2 "FFMS_DestroyVideoSource(0);" ; then
>             ffms_input="yes"
>             echo "#define FFMS_INPUT" >> config.h
> -           LDFLAGSCLI="$LDFLAGSCLI -lFFMS2"
> -        elif cc_check ffms.h "-lFFMS2 $LAVF_LDFLAGS -lstdc++"
> "FFMS_DestroyVideoSource(0);" ; then
> +           LDFLAGSCLI="$LDFLAGSCLI -lffms2"
> +        elif cc_check ffms.h "-lffms2 $LAVF_LDFLAGS -lstdc++"
> "FFMS_DestroyVideoSource(0);" ; then
>             ffms_input="yes"
>             echo "#define FFMS_INPUT" >> config.h
> -           LDFLAGSCLI="-lFFMS2 $LDFLAGSCLI -lstdc++"
> +           LDFLAGSCLI="-lffms2 $LDFLAGSCLI -lstdc++"
>          fi
>      fi
>  fi
> 
> 
> 
> Configuring works well, linking with "-lffms2" too.
> 
> gcc -o x264 x264.o [...] -lm -lpthread -Wl,-Bsymbolic -s -L. -lavformat
> -lswscale -lpostproc -lavcodec -lavutil -lm -lz -lbz2 -lpthread -lffms2
> -lgpac_static
> 
> 
> 
>  but...:
> 
> 
> 
> $ x264
> x264: error while loading shared libraries: libffms2.so.0: cannot open
> shared object file: No such file or directory
> 
> $ ldd ./x264
>         linux-vdso.so.1 =>  (0x00007fffb43ff000)
>         libm.so.6 => /lib/libm.so.6 (0x00007ff04ae30000)
>         libpthread.so.0 => /lib/libpthread.so.0 (0x00007ff04ac14000)
>         libavformat.so.52 => /usr/local/lib/libavformat.so.52
> (0x00007ff04a958000)
>         libswscale.so.0 => /usr/local/lib/libswscale.so.0
> (0x00007ff04a726000)
>         libpostproc.so.51 => /usr/local/lib/libpostproc.so.51
> (0x00007ff04a518000)
>         libavcodec.so.52 => /usr/local/lib/libavcodec.so.52
> (0x00007ff049934000)
>         libavutil.so.50 => /usr/local/lib/libavutil.so.50
> (0x00007ff049723000)
>         libz.so.1 => /lib/libz.so.1 (0x00007ff04950c000)
>         libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x00007ff0492fb000)
>         libffms2.so.0 => not found
>         libc.so.6 => /lib/libc.so.6 (0x00007ff048f8c000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007ff04b0b4000)
>         libfaac.so.0 => /usr/lib/libfaac.so.0 (0x00007ff048d7a000)
>         libfaad.so.0 => /usr/lib/libfaad.so.0 (0x00007ff048b3a000)
>         libgsm.so.1 => /usr/lib/libgsm.so.1 (0x00007ff04892c000)
>         libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0x00007ff0486b4000)
>         libopenjpeg.so.2 => /usr/lib/libopenjpeg.so.2 (0x00007ff048494000)
>         libschroedinger-1.0.so.0 => /usr/lib/libschroedinger-1.0.so.0
> (0x00007ff048215000)
>         libspeex.so.1 => /usr/lib/libspeex.so.1 (0x00007ff047ffb000)
>         libtheoraenc.so.1 => /usr/lib/libtheoraenc.so.1 (0x00007ff047dc1000)
>         libtheoradec.so.1 => /usr/lib/libtheoradec.so.1 (0x00007ff047ba7000)
>         libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007ff0477cd000)
>         libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007ff0475a0000)
>         libxvidcore.so.4 => /usr/lib/libxvidcore.so.4 (0x00007ff0472ae000)
>         liboil-0.3.so.0 => /usr/lib/liboil-0.3.so.0 (0x00007ff04701e000)
>         libogg.so.0 => /usr/lib/libogg.so.0 (0x00007ff046e18000)
>         librt.so.1 => /lib/librt.so.1 (0x00007ff046c10000)
> 
> 
> $ ls -lh /usr/local/lib/libffms2.so.0*
> lrwxrwxrwx 1 root root   17 2010-01-26 18:05
> /usr/local/lib/libffms2.so.0 -> libffms2.so.0.0.0
> -rwxr-xr-x 1 root root 213K 2010-01-26 18:05
> /usr/local/lib/libffms2.so.0.0.0
> 
> 
> What am I missing? Note I did not try to compile x264 with the patches
> starting with 6662db34 and old ffmpegsource, so might be a problem with
> these changes... (but had it running with old ffmpegsource and before
> 6662db34)
> 
> Regards
> Markus
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> http://mailman.videolan.org/listinfo/x264-devel
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> http://mailman.videolan.org/listinfo/x264-devel



More information about the x264-devel mailing list