13

これが私の問題です:

  • ソース (バージョン 1.2) から ffmpeg をビルドしました。libav* ライブラリは /usr/local/lib にあり、静的です
  • 私は ns3 (www.nsnam.org) モジュールをコンパイルしているので、リンカに対する私の唯一の制御は環境変数 LINKFLAGS によるものです。
  • ソースでは、ヘッダーは「extern C」ブロックにあるため、通常の g++ 名マングリングではありません
  • LINKFLAGS="-I/usr/local/include/libavformat -I/usr/local/include/libavcodec -I/usr/local/include/libavutil -L/usr/local/lib -lavformat -lavcodec -lavutil" を設定しました、リンカは私が呼び出した libav* 関数のいずれも見つけられないようです (多くの「未定義の参照」が表示され、次に「collect2: エラー: ld がステータス 1 を返しました」というメッセージが表示されます)。

誰でも私を助けることができますか?ありがとう...

編集:未定義の参照メッセージのいくつかを次に示します。

    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_guess_format'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_read_frame'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avformat_write_header'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_interleaved_write_frame'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_find_stream_info'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_register_all'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_init_packet'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avformat_alloc_context'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_dump_format'
    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avio_close'

edit2:「ビルドに失敗しました」の後に表示されるメッセージは次のとおりです。

-> task in 'scratch-simulator' failed (exit status 1): 
{task 53952272: cxxprogram scratch-simulator.cc.1.o -> scratch-simulator}
['/usr/bin/g++', '-I/usr/local/include/libavcodec', '-I/usr/local/include/libavformat/',
 '-I/usr/local/include/libavutil/', '-L/usr/local/lib', '-I/usr/local
/include/libavcodec', '-I/usr/local/include/libavformat/', '-I/usr/local/include
/libavutil/', '-L/usr/local/lib', '-pthread', '-pthread', '-Wl,-z,relro', 
'scratch/scratch-simulator.cc.1.o', '-o', '/home/fede/Thesis/ns-allinone-3.14.1
/ns-3.14.1/build/scratch/scratch-simulator', '-Wl,-Bstatic', '-Wl,-Bdynamic', 
'-Wl,--no-as-needed', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.',
 '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.',
 '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', 
'-L.', '-L.', '-L.', '-L.', '-L.', '-L/usr/lib', '-lns3.14.1-test-debug', '-lns3.14.1-
csma-layout-debug', '-lns3.14.1-point-to-point-layout-debug', '-lns3.14.1-netanim-
debug', '-lns3.14.1-lte-debug', '-lns3.14.1-spectrum-debug', '-lns3.14.1-antenna-
debug', '-lns3.14.1-aodv-debug', '-lns3.14.1-dsdv-debug', '-lns3.14.1-dsr-debug', 
'-lns3.14.1-mesh-debug', '-lns3.14.1-olsr-debug', '-lns3.14.1-csma-debug', '-lns3.14.1-
wimax-debug', '-lns3.14.1-applications-debug', '-lns3.14.1-virtual-net-device-debug', 
'-lns3.14.1-uan-debug', '-lns3.14.1-energy-debug', '-lns3.14.1-flow-monitor-debug', 
'-lns3.14.1-nix-vector-routing-debug', '-lns3.14.1-tap-bridge-debug', '-lns3.14.1-
visualizer-debug', '-lns3.14.1-internet-debug', '-lns3.14.1-bridge-debug', '-lns3.14.1-
point-to-point-debug', '-lns3.14.1-mpi-debug', '-lns3.14.1-wifi-debug', '-lns3.14.1-
buildings-debug', '-lns3.14.1-propagation-debug', '-lns3.14.1-mobility-debug', 
'-lns3.14.1-config-store-debug', '-lns3.14.1-tools-debug', '-lns3.14.1-stats-debug',
 '-lns3.14.1-emu-debug', '-lns3.14.1-topology-read-debug', '-lns3.14.1-network-debug', 
'-lns3.14.1-qoe-monitor-debug', '-lns3.14.1-core-debug', '-lrt', '-lgsl', 
'-lgslcblas', '-lm', '-ldl', '-lgtk-x11-2.0', '-lgdk-x11-2.0', '-latk-1.0', 
'-lgio-2.0', '-lpangoft2-1.0', '-lpangocairo-1.0', '-lgdk_pixbuf-2.0', '-lcairo', 
'-lpango-1.0', '-lfreetype', '-lfontconfig', '-lgobject-2.0', '-lglib-2.0', '-lxml2', 
'-lpython2.7']
4

3 に答える 3

1

私はこの問題を抱えていましたがav_find_stream_info、問題はこの機能が廃止されたことです。問題は、ボックスに2つのffmpegがインストールされていて、1つのインストールからヘッダーを読み取っていて、別のインストールからライブラリを使用していたことです。

システムのデフォルト ライブラリを削除した後、問題は解決しました。

更新:Ubuntuの場合、次のことを行いました:

$ sudo dpkg -r libavcodec53
$ sudo dpkg -r libavformat53
$ sudo dpkg -r libavutil51
$ sudo dpkg -r libswscale2
于 2014-10-23T03:16:51.317 に答える