리눅스 LD_LIBRARY_PATH란? (설정 방법)
- 운영체제(OS)
- 2022. 12. 7.
리눅스는 환경변수를 통해 디렉토리 위치에 관계없이 바이너리를 실행하고, 응용 프로그램이 동적 라이브러리를 참조합니다. 환경변수란 컴퓨터 프로세스 작동 방식을 결정하는 값입니다. 가장 대표적인 것이 PATH 환경변수입니다. 리눅스에서 기본적으로 PATH 환경변수에 저장된 경로는 아래와 같습니다.
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
기본적인 PATH가 잡혀있기 때문에 리눅스에서 기본적으로 사용하는 명령어들이 동작합니다. 예를 들어, PATH에서 /bin 경로를 삭제하면 해당 경로에 있는 ls 명령어 사용 시 command not found를 출력합니다.
LD_LIBRARY_PATH란?
LD_LIBRARY_PATH는 리눅스에서 응용 프로그램이 공유 라이브러리를 참조할 때 확인하는 경로입니다. 응용 프로그램 구동에 필요한 라이브러리 경로는 LD_LIBRARY_PATH에 등록되어 있어야 합니다. 리눅스에서는 대부분의 응용 프로그램이 .so 확장자로 구성된 라이브러리를 동적으로 참조합니다.
LD라는 명칭은 dynamic LoaDer의 LD에서 따왔다고 합니다. 결국 LD_LIBRARY_PATH는 ‘라이브러리 로드 경로’ 정도로 이해할 수 있을 거 같습니다.
자주 보는 LD_LIBRARY_PATH 관련 에러
리눅스에서 응용 프로그램을 구동할 때 라이브러리를 찾지 못한다(not found)는 에러가 발생하면 대부분 LD_LIBRARY_PATH 변수가 잘못 설정됐기 때문입니다. 위에서 언급했듯 공유 라이브러리 경로가 LD_LIBRARY_PATH에 없으면 리눅스가 해당 라이브러리를 찾지 못하고 에러를 뱉습니다. 라이브러리가 컴퓨터에 있는데도 에러가 발생하면 LD_LIBRARY_PATH 확인이 필요합니다. (참고로 윈도우는 알아서 라이브러리를 잘 찾습니다.)
[에러 예시]
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
LD_LIBRARY_PATH 설정 방법
아래와 같이 LD_LIBRARY_PATH 변수에 경로값을 저장하고 export하는 방식으로 설정합니다. 콜론(:)을 구분자로 여러 경로를 추가할 수 있습니다.
LD_LIBRARY_PATH=경로1:경로2:경로3:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
또는
export LD_LIBRARY_PATH=경로1:경로2:경로3:$LD_LIBRARY_PATH
변수를 설정하는 위치는 정하기 나름입니다. 응용 프로그램을 실행하는 쉘 스크립트 파일 상단에 설정할 수도 있고, WAS 실행 단계(예를 들어 톰캣의 경우 startup.sh)에서 설정할 수도 있고, .bash_profile에 추가할 수도 있습니다.
설정이 잘 되었는지 확인하려면 echo로 변수를 출력해보면 됩니다.
[root@localhost ~]# echo $LD_LIBRARY_PATH
:tomcat/bin
'운영체제(OS)' 카테고리의 다른 글
유닉스와 리눅스의 차이 (0) | 2022.12.11 |
---|---|
윈도우 ISO 파일이란? 사용 방법 (0) | 2022.12.08 |
운영체제에서 마운트란? (파일 시스템 액세스) (0) | 2022.12.06 |
x64는 64비트, x86은 32비트인 이유? (0) | 2022.12.05 |
리눅스 로그 파일 특정 라인만 출력하기 (sed, more, head, tail) (0) | 2022.12.04 |