2011-06-21 22 views
0

問題はこれです:私はFFMPEGを使用する簡単なプログラムを書いています。次のようにコンパイル:FFMPEgとgccの問題


gcc -lavcodec -lavformat -lavutil -c test.c 

gcc -lavcodec -lavformat -Lavut -o test test.o 

問題なくコンパイル、テストファイルが表示されていますが、起動したとき: を。 /テスト エラーが発生します:

/test:共有ライブラリの読み込み中にエラーが発生しました:libavcodec.so.53:共有オブジェクトファイルを開くことができません。そのようなファイルまたはディレクトリはありません。

ffmpegは元々ビルドされインストールされ、libavcodec.so.53ファイルにあります。何が問題なのでしょうか?

+0

ちょうどコメント:リンクするときには必ずライブラリを置くべきです: 'gcc -o test test.o -lavcodec -lavformat -Lavut'。これを実行しているときは、LD_LIBRARY_PATHに 'avut'を含めるように設定してください。 'ldd。/ test'を実行するだけで、ローダーがどこのライブラリを期待しているのかを知ることができます。 –

+0

ありがとうございます。とった。 OK! – Kyborg2011

答えて

1

ライブラリとカスタムライブラリディレクトリ-Lavutにリンクしているようです。

あなたのローダーが実行可能ファイルのライブラリを探しチェック:

ldd ./test 

それらのいずれかは、非標準のディレクトリにある(とlddは、特定のライブラリが見つからなかったことを示している)場合は、にそれらを追加LD_LIBRARY_PATH:

LD_LIBRARY_PATH=/tmp/work/avut ./test 

あなたが好きなら、あなたは-rpathリンカオプション、例えばで実行可能ファイルにライブラリのパスをハードコーディングすることができますgcc ... -Wl,-rpath -Wl,/tmp/work/avut

+0

すべてはOKです。ヘルプ:LD_LIBRARY_PATH =/usr/local/lib。 /テスト ありがとう:) – Kyborg2011