Linux 동적 라이브러리를 찾을 수 없으면 어떻게 해야 하나요?
리눅스가 동적 라이브러리를 찾을 수 없는 문제 해결
동적 라이브러리는 공유 라이브러리입니다. 리눅스가 동적 라이브러리를 찾을 수 없는 문제를 해결하려면 먼저 동적 라이브러리의 특성을 이해해야 합니다. :
추천: "linux tutorial 》
● 동적 라이브러리는 프로그램이 실행될 때까지 일부 라이브러리 기능의 링크 로딩을 연기합니다.
● 프로세스 간 리소스 공유를 실현할 수 있습니다. (그래서 동적 라이브러리를 공유 라이브러리라고도 합니다.)
● 일부 프로그램의 업그레이드를 쉽게 해줍니다.
● 링크 로딩도 프로그램 코드(명시적 호출)에서 프로그래머가 완전히 제어할 수 있습니다.
위의 첫 번째 점에서 알 수 있듯이 동적 라이브러리는 정적 라이브러리처럼 라이브러리 파일을 바이너리 형식으로 프로그램에 패키징하는 것이 아니라 해당 라이브러리 기능이 실행될 때까지 프로그램이 실행될 때 동적 라이브러리를 동적으로 로드합니다. 이때 시스템은 동적 라이브러리의 이름만 알고 있으며, 이때 elf 실행 프로그램에는 시스템 동적 로더(동적 링커/로더)가 필요합니다. ld-linux.so에 의해 완료됩니다. elf 파일의 DT_RPATH 섹션(제어 불가능) => 환경 변수 LD_LIBRARY_PATH => /etc/ld.so.cache 파일 목록 => /lib/ 및 /usr/lib 디렉토리 라이브러리 파일을 찾아 메모리에 로드합니다.
그런 다음 우리가 해야 할 일은 동적 로더 검색 순서의 시퀀스에 동적 라이브러리가 있는 디렉터리의 절대 경로를 추가하는 것입니다. 구체적인 구현 방법은 다음과 같습니다.
방법 1: 공유 라이브러리를 복사합니다. /lib 또는 /usr/lib로 작성, 권장하지 않음
방법 2: 시스템 환경 변수에 동적 라이브러리가 있는 디렉터리의 절대 경로를 추가합니다
2.1. 라이브러리는 환경 변수에 위치합니다(터미널을 닫으면 무효화됩니다) )
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
2.2. 동적 라이브러리가 있는 디렉터리의 절대 경로를 ~/.bashrc 또는 /etc/profile로 설정합니다(영구적으로 유효). )
사용자 수준: ~/.bashrc 파일 끝에 라이브러리 경로를 추가합니다.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source ~ /.bashrc 또는 . ~/.bashrc 구성을 유효하게 만듭니다.
시스템 수준: 라이브러리 경로를 /etc/profile 파일의 끝
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chiliast/homework/day03/shared/lib
source /etc/profile 또는 ./etc/profile을 사용하여 구성을 효과적으로 만듭니다
방법 3: 추가 동적 라이브러리가 있는 디렉터리의 절대 경로를 /etc에 추가합니다. /ld.so.cache 파일(구현 2단계)
/etc/ld.so.conf 파일을 편집하고 라이브러리 파일이 있는 디렉터리에 경로를 추가하세요
ldconfig 실행(슈퍼유저 권한 필요), 이 명령은 /etc/ld.so.cache 파일을 다시 작성합니다
위 내용은 Linux 동적 라이브러리를 찾을 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!