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따라서 가능하다면 설치해 보세요. 이는 누락된 종속성을 만족시킬 수 있습니다.

일반적으로 소프트웨어를 로컬로 컴파일하고 설치하기 전에 먼저 배포판에 있는 기존 바이너리 패키지를 확인하세요.

관련 정보