Solaris에서 ld_library_path를 어디에 설정합니까?
문제
응용 프로그램을 설정하기에 가장 좋은 곳은 무엇입니까? LD_LIBRARY_PATH
Solaris의 변수? 어떻게
LD_LIBRARY_PATH
가변 작업?
우리는 현재 그것을 설정했습니다 .kshrc
, 그러나 다른 응용 프로그램에는 다른 버전의 메시징 프레임 워크가 필요하지만 이러한 응용 프로그램은 동일한 용도로 실행되므로 다른 응용 프로그램이 필요합니다. LD_LIBRARY_PATH
, 당신의 의견으로는이 변수를 설정하기에 가장 좋은 장소는 무엇입니까?
기본적으로 사용자 환경 대신 응용 프로그램 의이 변수 경로를 어떻게 만드는 방법을 알아 내려고 노력하고 있습니다.
해결책
일반적으로 응용 프로그램을 시작하는 쉘 스크립트가 있습니다. 쉘 스크립트에서는 해당 앱에 필요한 모든 것에 ld_library_path를 설정 한 다음 스크립트가 해당 앱을 시작하도록합니다. 그렇게하면 경로가 해당 응용 프로그램에 대해서만 설정되어야합니다.
다른 팁
공식적인 설명을 찾을 수 있습니다 LD_LIBRARY_PATH
"ld.so.1"의 맨 페이지에서, 즉 "man ld.so.1"을 실행합니다. 또한 런타임 링커에서 존중하는 다른 변수를 설명합니다.
에 추가 LD_LIBRARY_PATH
, 실행 파일 및 공유 라이브러리에는 라이브러리에 대한 검색 경로가 내장 될 수도 있습니다. 직접 연결 한 응용 프로그램을 실행하는 경우 LD의 -R 옵션을 사용하여 내장 경로를 설정할 수 있습니다 (SUN CC와 GCC는 동일한 작업을 수행 할 수있는 옵션이 있습니다). 이를 통해 사용을 피할 수 있습니다 LD_LIBRARY_PATH
처음에.
Vladr, Alanc가 맞습니다.
Solaris에서 ld_library_path를 설정하는 것이 좋습니다. 조금도.
라이브러리 또는 실행 파일에 특정 runpath를 굽는 경우 -r 플래그를 링커에 사용해야합니다. GCC로 빌드하는 경우 -wl, rpath (생각합니다)를 사용하십시오.
건축 후 단계 (예 : 재 컴파일 소스가 없기 때문에)를 위해이 작업을 수행 해야하는 경우 Elfedit (1)가 많은 도움이됩니다. Manpage와 Linker+Libraries Guide에서 문서화되어 있습니다. http://docs.oracle.com/cd/e26502_01/html/e26507/index.html
CRLE 응답이 가장 정확합니다. Solaris에서 LD_LIBRARY_PATH
사용해서는 안됩니다. 대신 CRLE를 사용하십시오. 현재 경로를 보려면 그 자체로 "crle"을 실행하십시오. 목록을 업데이트하려면 사용하십시오 crle -u -l /path/to/your/lib/directory
. 그만큼 -u
시스템 구성에 대한 변경 사항을 작성하려면 필요합니다. 그렇지 않으면 변경 사항이 일시적입니다. 더 많은 옵션은 Man Page를 참조하십시오.
방금 Global Ld_library_Path가 적용되지 않는 사례를 발견했습니다. 스크립트를 랩핑하고 앱 전에 ld_library_path를 설정해야했습니다. CRLE는 BlastWave의 PKGutil을 통해/OPT/CSW/LIB에 많은 LIB를 설치 한 경우 좋은 글로벌 솔루션입니다.
.profile 또는 .profile.user 파일을 확인할 수 있습니다. 댓글이 내려진 항목이 있습니다. 파손되었으므로 사용하는 것이 권장되지 않습니다. 변수를 사용하지 않고 깃발에 값을 전달하여 바이너리를 구축해야합니다.
CRLE 명령을 사용할 수 있습니다.
crle -l/path/to/your/lib/file