linux 환경 변수 LDLIBRARY_PATH

4791 단어
LIBRARY_PATH 및 LDLIBRARY_PATH는 Linux에서 사용되는 두 환경 변수로, 두 환경 변수의 의미와 역할은 다음과 같습니다.
LIBRARY_PATH 환경 변수는 프로그램이 컴파일하는 동안 동적 링크 라이브러리를 찾을 때 공유 라이브러리를 찾을 경로를 지정하는 데 사용됩니다. 예를 들어 gcc 컴파일에 필요한 동적 링크 라이브러리의 디렉터리를 지정합니다.다음과 같이 설정합니다. 여기서 LIBDIR1과 LIBDIR2는 두 개의 라이브러리 디렉토리입니다.
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH

LD_LIBRARY_PATH 환경 변수는 프로그램이 로드되는 동안 동적 링크 라이브러리를 찾을 때 시스템의 기본 경로를 제외한 다른 경로를 지정하는 데 사용됩니다. 참고, LDLIBRARY_PATH에 지정된 경로는 시스템의 기본 경로 앞에 표시됩니다.다음과 같이 설정합니다. 여기서 LIBDIR1과 LIBDIR2는 두 개의 라이브러리 디렉토리입니다.
export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH

예를 들어 우리는 프로그램을 개발하는데 자주 어떤 동적 링크 라이브러리를 사용해야 한다. 프로그램의 이식성을 확보하기 위해 먼저 이 컴파일된 동적 링크 라이브러리를 자신이 지정한 디렉터리에 놓고 상기 방식에 따라 이 디렉터리를 LD 에 추가할 수 있다.LIBRARY_PATH 환경 변수에서, 이렇게 하면 자신의 프로그램이 동적 링크를 한 후에 라이브러리 파일을 불러와서 실행할 수 있다.
차별화 및 사용:
개발 시 LIBRARY 설정gcc에서 컴파일할 때 필요한 동적 링크 라이브러리를 찾을 수 있도록 PATH.
출시 시 LD 설정LIBRARY_프로그램이 실행될 때 필요한 동적 링크 라이브러리를 자동으로 찾을 수 있도록 PATH.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux 환경 변수 이름, 이 환경 변수는 주로 공유 라이브러리 (동적 링크 라이브러리) 를 찾을 때 기본 경로를 제외한 다른 경로를 지정하는 데 사용됩니다.(이 경로는 기본 경로 앞에서 찾을 수 있음) 이식 프로그램을 이식할 때 특정한 동적 라이브러리를 사용해야 하는데, 이 컴파일된 동적 라이브러리는 우리가 만든 디렉터리에 놓으면 이 디렉터리를LD 에 설정할 수 있습니다.LIBRARY_PATH에서함수 동적 링크를 실행하면so시, 이 파일이 부족한 디렉터리에 '/usr/local/lib' and '/usr/lib' 가 없으면.그러면 환경 변수 LD 를 지정해야 합니다.LIBRARY_PATH 기존 환경 변수에 새 경로 이름을 추가해야 하는 경우 LDLIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs는 새 경로 열)
 
 
Linux가 실행될 때 공유 라이브러리(*.so)는 어떻게 관리합니까?Linux 아래에서 공유 라이브러리의 찾기와 불러오는 것은/lib/ld입니다.실현했어ld.so는 표준 경로 (/lib,/usr/lib) 에서 응용 프로그램이 사용하는 공유 라이브러리를 찾습니다.단, 필요한 공유 라이브러리가 비표준적인 경로에서ld.so 어떻게 찾았지?현재 Linux에서 통용되는 방법은 비표준적인 경로를/etc/ld에 가입하는 것이다.so.conf, 그리고ldconfig를 실행하여/etc/ld를 생성합니다.so.cache. ld.so 공유 라이브러리를 불러올 때ld.so.캐치 찾기.전통적으로 Linux의 선대 Unix에는 LD 라는 환경 변수가 있습니다.LIBRARY_PATH는 비표준 경로의 공유 라이브러리를 처리합니다.ld.so 공유 라이브러리를 불러올 때 이 변수가 설정한 경로를 찾을 수 있습니다.
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib
export LD_LIBRARY_PATH
하지만 LD 사용을 피해야 한다는 목소리가 적지 않다LIBRARY_PATH 변수, 특히 글로벌 변수로 사용됩니다.이 사운드는 * LD 입니다.LIBRARY_PATH is not the answer - http://prefetch.net/articles/linkers.badldlibrary.html* Why LD_LIBRARY_PATH is bad - http://xahlee.org/UnixResource_dir/_/ldpath.html* LD_LIBRARY_PATH - just say no - http://blogs.sun.com/rie/date/20040710이 문제를 해결하는 또 다른 방법은 컴파일할 때 - R 옵션을 통해run-time path를 지정하는 것이다.1./lib과/usr/lib에 물건을 넣으면/etc/ld를 수정하지 않아도 됩니다.so.conf입니다. 하지만 끝난 후에ldconfig를 조정해야 합니다. 그렇지 않으면 이library에서 2를 찾을 수 없습니다.위의 두 디렉터리 이외에 물건을 추가하고 싶을 때는 반드시/etc/ld를 수정해야 합니다.so.그리고 ldconfig를 호출합니다. 그렇지 않으면 mysql가/usr/local/mysql에 설치되어 있는 것을 찾을 수 없습니다. mysql에는/usr/local/mysql/lib 아래에 많은 library가 설치되어 있습니다. 이럴 때는/etc/ld가 필요합니다.so.conf 아래에/usr/local/mysql/lib을 한 줄 추가합니다. 저장한 후에ldconfig를 저장하면 새로운library가 프로그램이 실행될 때 찾을 수 있습니다.3. 이 두 디렉터리 이외에lib을 놓고 싶지만/etc/ld에 놓고 싶지 않습니다.so.conf에 물건을 넣거나 추가할 권한이 없습니다.그것도 괜찮습니다. 바로 export의 전역 변수 LD 입니다.LIBRARY_PATH, 그리고 프로그램을 실행할 때 이 디렉터리에서 library를 찾습니다.일반적으로 이것은 임시 해결 방안일 뿐 권한이 없거나 임시로 필요할 때 사용한다.4.ldconfig가 만든 이 물건들은 모두 프로그램을 실행할 때와 관계가 있고 컴파일할 때와 아무런 관계가 없다.번역할 때는 -L을 넣어야 하니 헷갈리지 마세요.5. 한 마디로 하면library에 대한 변동이 있더라도 ldconfig를 하는 것이 좋습니다. 그렇지 않으면 예상치 못한 결과가 발생할 수 있습니다.시간이 많이 걸리지는 않겠지만 많은 것을 절약할 수 있을 거야.LD_LIBRARY_PATH  , loader: 。 , 。 linux , , /etc/ld.so.conf , ldconfig。 , , shell 。 , ,loader , shell 。 ,LD_LIBRARY_PATH 。 rpath .    LD_RUN_PATH 。/lib,/usr/lib 。 /etc/ld.so.conf.
 
 
LD_LIBRARY_PATH:동적 라이브러리 찾기 경로
설정:
방법 1: export LDLIBRARY_PATH=LD_LIBRARY_PATH:/XXX, 그런데 나오면 효력이 없어요.
방법2: 수정~/.bashrc 또는 ~/.bash_profile 또는 시스템 수준의/etc/profile
                  1. export PATH=/opt/activeP/lib:$LDLIBRARY_PATH
                  2. source .bashrc(Source 명령은 점 명령이라고도 하며 점 기호(.)라고도 합니다.source 명령은 수정된 초기화 파일을 다시 실행하는 데 사용되며, 로그아웃하고 다시 로그인할 필요가 없습니다.
방법3: 이것은 LD 를 수정하지 않았습니다.LIBRARY_PATH 하지만 효과는 똑같아요. 동적 라이브러리 검색을 실현하고,
                1./etc/ld.so.conf 아래에/usr/local/MySQL/lib 행 추가
                2. 저장한 다음ldconfig (ldconfig 명령의 용도는 기본 검색 디렉터리 (/lib와/usr/lib), 동적 라이브러리 프로필/etc/ld입니다.so.conf에 열거된 디렉터리에서 공유 가능한 동적 링크 라이브러리 (앞에서 설명한 바와 같이lib*.so*) 를 검색하여 동적 불러오기 프로그램 (ld.so) 에 필요한 연결과 캐시 파일을 만듭니다.캐시 파일의 기본값은/etc/ld입니다.so.cache, 이 파일은 정렬된 동적 링크 라이브러리 이름 목록을 저장합니다.)
방법 3 설정은 조금 번거롭지만 사용자의 제한을 받지 않는 것이 장점이다.
전재 대상:https://www.cnblogs.com/kex1n/p/5993498.html

좋은 웹페이지 즐겨찾기