rtmpdumpはルートなしでコンパイルできます。 librtmp.so.1 =>が見つかりません。

rtmpdumpはルートなしでコンパイルできます。 librtmp.so.1 =>が見つかりません。

~/.localprefix=~/.localそのため、プログラムが正しくコンパイルされるように、makefileのプレフィックスオプションを編集して正常にコンパイルし、librtmpバイナリで実行するとldd次のような出力が得られました。

ldd rtmpdump-ksv/rtmpdump
linux-vdso.so.1 =>  (0x00007ffedb4d2000)
librtmp.so.1 => not found
libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fc7489a5000)
libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fc7485ac000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc748395000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc748113000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc747d87000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc747b83000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc748c15000)

私はibrtmp.so.1コピーしようとし、librtmp.soすべてのディレクトリに~/.local

答え1

デフォルトでは、プログラムは実行可能ファイルと同じディレクトリにあるライブラリを検索しません。 Unixの従来のディレクトリ構成では、というディレクトリに実行可能ファイルがあり、…/binというディレクトリにライブラリがあります…/lib

ソフトウェアをコンパイルするときにこれを設定すると、最終的に実行可能ファイルとライブラリがインストールprefix=~/.localされます。これらのライブラリについてシステムに通知するには、次の行を追加するか、環境変数と設定を準備します。~/.local/bin~/.local/lib~/.profilePATHLD_LIBRARY_PATH

PATH=$PATH:~/.local/bin
export LD_LIBRARY_PATH=~/.local/lib

OSXでは、DYLD_LIBRARY_PATH代わりにLD_LIBRARY_PATH

答え2

あなたのディストリビューションは何ですか?ディストリビューションでrtmpdumpバイナリパッケージを提供していますか?たとえば、Debianがこれを行うので、UbuntuとMintもこれを行う必要があります。それでは、なぜそれを使用しないのですか?いずれにせよ、

apt-file search librtmp.so

librtmp-dev: /usr/lib/x86_64-linux-gnu/librtmp.so
librtmp0: /usr/lib/x86_64-linux-gnu/librtmp.so.0
librtmp1: /usr/lib/x86_64-linux-gnu/librtmp.so.1

librtmp-devしたがって、可能であればインストールしてみてください。これは欠落している依存関係を満たすことができます。

通常、ソフトウェアをローカルにコンパイルしてインストールする前に、まずディストリビューションの既存のバイナリパッケージを確認してください。

関連情報