使用ffmpeg安装Open-CV时出错

时间:2012-01-07 16:50:39

标签: c opencv ffmpeg makefile cmake

我正在尝试在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后重建所有内容,如here所述。

使用说明

配置安装后
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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

修改

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