使用ffmpeg安装Open-CV时出错

我正在尝试在Ubuntu 11.04上安装Open-CV库。

我按照InstallationGuide中的所有说明进行操作。

但是在成功安装后我意识到我没有FFMPEG支持,因为在我的配置文件中禁用了FFMPEG

 Video I/O: -- DC1394 1.x: NO -- DC1394 2.x: YES -- FFMPEG: NO -- codec: YES -- format: YES -- util: YES -- swscale: NO -- gentoo-style: YES -- GStreamer: YES -- UniCap: NO -- PvAPI: NO -- V4L/V4L2: Using libv4l -- Xine: NO 

所以我尝试在安装FFMEPG之后重建所有内容,如此处所述 。

使用该指令配置安装后

 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ../OpenCV-2.3.1 

我运行make命令获取此错误:

 make[2]: *** [bin/opencv_test_calib3d] Error 1 make[1]: *** [modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all] Error 2 make: *** [all] Error 2 

这是错误出现的编译点:

 Linking CXX executable ../../bin/opencv_test_calib3d ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis_headerout' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_out_samplerate' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_disable_reservoir' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_encode_buffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaUnmapBuffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaDestroyBuffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_comment_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_param_default' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_param_apply_profile' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_brate' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_headers' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncGetCurrentConfiguration' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis_blockout' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_info_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis_buffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_comment_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaCreateBuffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_bWriteVbrTag' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncSetConfiguration' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_ctl' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `D_IF_decode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncGetDecoderSpecificInfo' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_block_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_close' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_encode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_VBR' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Encoder_Interface_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_get_framesize' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncOpen' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_packetout' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_quality' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Decoder_Interface_exit' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_alloc' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_encode_setup_vbr' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_info_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_in_samplerate' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_reconfig' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_param_apply_fastfirstpass' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_VBR_quality' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_mode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `D_IF_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_set_num_channels' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncEncode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_encode_setup_managed' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Encoder_Interface_exit' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Decoder_Interface_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaRenderPicture' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_encode_ctl' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_info_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_delayed_frames' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_param_parse' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_free' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `D_IF_exit' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_dsp_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Decoder_Interface_Decode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaMapBuffer' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_block_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_bit_depth' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_picture_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_close' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_encoder_open_120' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `faacEncClose' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaEndPicture' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_encode_flush' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_encode_buffer_interleaved' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_comment_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_comment_clear' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_init_params' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `x264_param_default_preset' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_encode_setup_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_bitrate_addblock' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_comment_add_tag' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_flushheader' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `lame_encode_buffer_int' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `th_encode_ycbcr_in' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_bitrate_flushpacket' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_analysis_wrote' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vorbis_info_init' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `Encoder_Interface_Encode' ../../lib/libopencv_highgui.so.2.3.1: undefined reference to `vaBeginPicture' collect2: ld returned 1 exit status 

任何人都可以告诉我我正在关注的安装过程有什么问题?

为什么会出现这个库引用错误?

这些错误来自链接过程,它们通常意味着您缺少系统上的某些库,或者它们位于构建过程未搜索的位置。

我建议您使用Google这些符号来了解您需要安装的软件包。

编辑:

总结我们私下进行的聊天,主要问题是x264是静态构建的。 使用--enable-shared 构建库的共享版本至关重要 。 OP建议在所有配置选项中添加--prefix=/usr/local