> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > Linux 동적 라이브러리를 찾을 수 없으면 어떻게 해야 합니까?

Linux 동적 라이브러리를 찾을 수 없으면 어떻게 해야 합니까?

藏色散人
풀어 주다: 2020-05-25 10:13:08
원래의
3103명이 탐색했습니다.

Linux 동적 라이브러리를 찾을 수 없으면 어떻게 해야 합니까?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿