Ich baue die ffmpeg mit librmp. Mein librtmp ist unter/opt/librmp/lib. Wenn ich die ffmpeg ausführen, hieß es:Wie fügt man den Suchpfad einer shared library zu einer ausführbaren Datei hinzu?
./ffmpeg: error while loading shared libraries: librtmp.so.0: cannot open shared object file: No such file or directory
Ich benutze ldd Kommando es zeigt nicht gefunden:
[[email protected] bin]# ldd ffmpeg
linux-vdso.so.1 => (0x00007fff15576000)
librtmp.so.0 => not found
libz.so.1 => /lib64/libz.so.1 (0x00002b9a71e10000)
libm.so.6 => /lib64/libm.so.6 (0x00002b9a72025000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b9a722a8000)
libc.so.6 => /lib64/libc.so.6 (0x00002b9a724c3000)
/lib64/ld-linux-x86-64.so.2 (0x00002b9a71bf2000)
weiß, dass ich meine so an:
[[email protected] bin]# ls -alh /opt/librtmp/lib/
total 300K
drwxr-xr-x 3 root root 4.0K Sep 25 17:10 .
drwxr-xr-x 7 root root 4.0K Sep 25 17:10 ..
-rw-r--r-- 1 root root 158K Sep 25 17:10 librtmp.a
lrwxrwxrwx 1 root root 12 Sep 25 17:10 librtmp.so -> librtmp.so.0
-rwxr-xr-x 1 root root 118K Sep 25 17:10 librtmp.so.0
drwxr-xr-x 2 root root 4.0K Sep 25 17:10 pkgconfig
ich einige gefunden Möglichkeiten, das Problem zu beheben
- ändern /etc/ld.so.conf, aber es benötigt, um ein Abendessen Benutzer
- Satz Variable LD_LIBRARY_PATH, aber es ist conventient nicht an Benutzer
- Pass rpath zu gcc, wie diese
configure args für meine ffmpeg
PKG_CONFIG_PATH="/opt/librtmp/lib/pkgconfig" ./configure --disable-doc \
--disable-ffserver --disable-avdevice \
--disable-postproc --disable-avfilter --disable-bsfs \
--disable-filters \
--disable-asm \
--disable-bzlib \
--enable-librtmp \
--prefix=/opt/ffmpeg \
--extra-ldflags="-Wl,-rpath,/opt/librtmp/lib"
Angenommen, es gibt keine Quellcode neu zu kompilieren? Wie fügen Sie den Suchpfad für die gemeinsame Bibliothek zu einer ausführbaren Datei hinzu?
Ich habe einen Symlink von /usr/lib/i486-linux-gnu/librtmp.so in/usr/local/lib und ffmpeg läuft wie ein Charme ... – Ice