2012-03-08 12 views
5

を無視しています。

./configure --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-x11grab --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 
make 
make install 

ldd /usr/local/bin/ffmpeg/usr/local/lib$LD_LIBRARY_PATHを設定する私にこの

linux-gate.so.1 => (0xb7717000) 
libavdevice.so.53 => not found 
libavfilter.so.2 => not found 
libavformat.so.54 => not found 
libavcodec.so.54 => not found 
libpostproc.so.52 => not found 
libswresample.so.0 => not found 
libswscale.so.2 => not found 
libavutil.so.51 => not found 
libm.so.6 => /lib/i386-linux-gnu/tls/i686/nosegneg/libm.so.6 (0xb76e3000) 
libpthread.so.0 => /lib/i386-linux-gnu/tls/i686/nosegneg/libpthread.so.0 (0xb76ca000) 
libc.so.6 => /lib/i386-linux-gnu/tls/i686/nosegneg/libc.so.6 (0xb7569000) 
/lib/ld-linux.so.2 (0xb7718000) 

を与えた「が見つかりません」というエラーを修正しますが、here述べた理由のために、私は永続的に$LD_LIBRARY_PATHを設定する必要はありません。

$LD_RUN_PATH/usr/local/libに設定して、同じコマンドで再コンパイルしました。
makeコンパイルするとき$LD_RUN_PATHを無視しているように見えます。

のMakefileへの大規模な変更を加えることなく$LD_RUN_PATHを使用する方法はありますか?

+0

と異なっている場合、私は代わりに-rpathの-rpath-リンクを使用することをお勧めしますmakeを使って)? – Beta

+0

私は分かりません。それをどうすればテストできますか? – htoip

+0

あなたは私たちに、 'lddでは/ usr/local/binに/ ffmpeg'を実行メイクファイルの一部を示してもらえますか? – Beta

答えて

5

は、あなたが(彼らに対してリンクするソフトウェアを構築したいのような)共有モードでバイナリをコンパイルする理由を持っていますか?静的な 'ffmpeg'バイナリがうまく動作する場合は、--enable-sharedオプションを指定せずにこれらの依存関係を解消するように設定してください。

そうしないと、あなたは、どちらか(例えば、「LD_LIBRARY_PATH =は/ usr/local/libには/ usr LD_LIBRARY_PATHで「ffmpegの」の処刑を前に置く、環境にLD_LIBRARY_PATHを設定することで、あなたのシステムが共有ライブラリが住んでいる場所を知らせる必要があります/ local/bin/ffmpeg ")、システムのライブラリパスを適切な場所に更新してください。

"LDFLAGS = ' - L/my/strange/path/lib -Wl、-rpath/my/strange/path/libは、あなたの投稿にリンクしているページの一番下にあります。 lib '"

--extra-ldflags="-L/usr/local/lib -Wl,-rpath /usr/local/lib" 

を、得られる「ffmpegの」バイナリは、共有ライブラリを検索する場所を知っています:FFmpegのために、そしてあなたの状況のた​​め、設定時に、この追加のパラメータを渡します。これと

多くのソリューション。

+0

私は共有オプションが必要かどうかわかりませんが、その指示が何を使用するのか分かりません。 '--extra-ldflags'は完全に機能しました。 – htoip

2

この問題を抱えている人は、$LD_RUN_PATHがうまくいかなかった理由は、ゴールドリンカーのthis bugである可能性があります。

は、(マイクの答えで説明したようにこの問題を回避するには、RPATHを使用することです)

2
  1. パッケージのは./configureが既に率直に(リンカのコマンドラインパラメータでは、いくつかの-Wl、-rpathオプションを入れているので、おそらくLD_RUN_PATHは無視されますI私はここで同じ動作を見ますが、486からmips32にクロスコンパイルしています)。

  2. ./configure LDFLAGS = " - L/your-lib -Wl、-rpath-link =/your/lib" CPPFLAGS = " - I/your/include" --prefix =/TGT ...

    ディレクトリ/あなたはせずに、すなわちコマンドライン上で(手で成功裏にリンクできます/ TGT

関連する問題