Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

This error means that linker does not find a symbol 'speex_header_free' that libavcodec (from ffmpeg) depends on. OpenCV has been compiled with FFMPEG support so this dependency comes from that. That symbol is needed because libavcodec has been compiled with support for speex codec.

One option is that speex library is installed to a path that the linker does not know about. If you use system package management to install all the components, this is unlikely.

Another option is that a different version of speex library has been installed on your system than what libavcodec/ffmpeg has been compiled against. This different speex library then does not export a symbol 'speex_header_free' that libavcodec expects and linker finds that problem.

You should try to make sure that a compatible speex library is in the library paths. You could also try to install FFMPEG without speex codec support to avoid this dependency. This would most likely need you to install it from the sources and that is out of the scope for my answer.

This error means that linker does not find a symbol 'speex_header_free' that libavcodec (from ffmpeg) depends on. OpenCV has been compiled with FFMPEG support so this dependency comes from that. That symbol is needed because libavcodec has been compiled with support for speex codec.

One option is that speex library is installed to a path that the linker does not know about. If you use system package management to install all the components, this is unlikely.

Another option is that a different version of speex library has been installed on your system than what libavcodec/ffmpeg has been compiled against. This different speex library then does not export a symbol 'speex_header_free' that libavcodec expects and linker finds that problem.

You should try to make sure that a compatible speex library is in the library paths. You could also try to install FFMPEG without speex codec support to avoid this dependency. This would most likely need you to install it from the sources and that is out of the scope for my answer.

You could try running something like the following to see the missing libraries. Path could be a bit different for 32-bit libraries.

$ ldd /usr/lib64/libavcodec.so

If libspeex.so can be found, then the found library version is probably wrong. If it's missing completely, you need to install correct version of speex library.