~/.local
prefix=~/.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
~/.profile
PATH
LD_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
따라서 가능하다면 설치해 보세요. 이는 누락된 종속성을 만족시킬 수 있습니다.
일반적으로 소프트웨어를 로컬로 컴파일하고 설치하기 전에 먼저 배포판에 있는 기존 바이너리 패키지를 확인하세요.