2

2.4 のすべてのバージョンをビルドしようとしましたが、「CXX 実行可能ファイル ../../bin/opencv_test_core をリンクする」ときに次のようにすべて失敗します。

/usr/local/lib/libavcodec.so.54: undefined reference to `av_opt_set@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_strcasecmp@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_bprint_finalize@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_timecode_make_smpte_tc_string@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_timecode_make_string@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_realloc_f@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_timecode_get_smpte_from_framenum@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_timecode_init@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_samples_set_silence@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_calloc@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_opt_get@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_strncasecmp@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_samples_fill_arrays@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_get_media_type_string@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_dynarray_add@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_bprint_init@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_asprintf@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_sample_fmt_is_planar@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_samples_get_buffer_size@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_opt_get_int@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_timecode_make_mpeg_tc_string@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_rescale_q_rnd@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_bprintf@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_samples_copy@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_get_default_channel_layout@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_timecode_init_from_string@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_bprint_chars@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_des_mac@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_timecode_adjust_ntsc_framenum@LIBAVUTIL_51'
/usr/local/lib/libavformat.so.54: undefined reference to `av_timegm@LIBAVUTIL_51'
/usr/local/lib/libavcodec.so.54: undefined reference to `av_tempfile@LIBAVUTIL_51'

私の CMakeLists.txt ファイルはデフォルトですが、TBB を使用するように変更し、ドキュメントを無効にし、冗長モードをオンにしました。

ldd /usr/local/lib/libavcodec.so.54 を実行すると、次のようになります。

root@omap4-multi:~/opencv/2.4.3/build# ldd /usr/local/lib/libavcodec.so.54
    libavutil.so.51 => /usr/local/lib/libavutil.so.51 (0xb6132000)
    libx264.so.123 => /usr/local/lib/libx264.so.123 (0xb5fc4000)
    libvorbisenc.so.2 => /usr/local/lib/libvorbisenc.so.2 (0xb5e4a000)
    libvorbis.so.0 => /usr/local/lib/libvorbis.so.0 (0xb5e14000)
    libtheoraenc.so.1 => /usr/local/lib/libtheoraenc.so.1 (0xb5dcc000)
    libtheoradec.so.1 => /usr/local/lib/libtheoradec.so.1 (0xb5dac000)
    libopencore-amrwb.so.0 => /usr/local/lib/libopencore-amrwb.so.0 (0xb5d93000)
    libopencore-amrnb.so.0 => /usr/local/lib/libopencore-amrnb.so.0 (0xb5d67000)
    libmp3lame.so.0 => /usr/local/lib/libmp3lame.so.0 (0xb5cdd000)
    libfaac.so.0 => /usr/local/lib/libfaac.so.0 (0xb5cc1000)
    libm.so.6 => /lib/libm.so.6 (0xb5c44000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb5c29000)
    libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0xb5c02000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xb5be3000)
    libc.so.6 => /lib/libc.so.6 (0xb5ab8000)
    libogg.so.0 => /usr/local/lib/libogg.so.0 (0xb5aac000)
    /lib/ld-linux.so.3 (0x42228000)

何が原因なのか、またはそれを修正するために何ができるのか、誰にも分かりますか? 私はかなり長い間これに取り組んできましたが、途方に暮れています。どんな助けでも大歓迎です。

4

2 に答える 2

0

同様の問題がありましたが、ffmpeg の 1 つ以上の依存関係をアップグレードした場合、ffmpeg の問題です。Ffmpeg は、すべての依存関係で再コンパイルまたは更新する必要があります

于 2013-12-04T05:36:09.947 に答える
0

私もこの問題を抱えています。ffmpeg を再コンパイルしても問題は解決しません。apt-get最後に、ソース コードからインストールされたffmpegと によってインストールされた lib の間の競合に気付きましlibavutil-devlibavutil-extra-51。を使用して ffmpeg を削除するだけapt-get remove ffmpegでは、この問題は解決しませんでした。apt私の解決策は、次のようにインストールされている競合ライブラリを削除することです。

sudo apt-get remove libavutil-dev libavutil-extra-51 

お役に立てば幸いです。

于 2014-07-30T08:44:35.953 に答える