데스크탑에서 시작된 응용 프로그램에 대해 LD_LIBRARY_PATH를 설정하십시오.


8

Ubuntu 10.04 LTS에 Qt Creator가 설치되어 있습니다. 데스크탑에서 Qt Creator를 시작하면 작업중인 애플리케이션을 빌드 할 수 있지만 실행하거나 디버깅 할 수 없습니다. 약간의 어려움을 겪은 후 LD_LIBRARY_PATH가 데스크톱에서 실행되는 응용 프로그램에 대해 설정되지 않은 것을 발견했습니다. bash (LD_LIBRARY_PATH가 .bashrc에 설정되어 있음)에서 Qt Creator를 시작하면 모든 것이 실행되고 완벽하게 디버깅됩니다.

실행중인 모든 응용 프로그램에 대해 LD_LIBRARY_PATH를 설정하려면 어떻게합니까?

답변:


6

이것은 응용 프로그램 자체의 버그처럼 보입니다. 필요한 LD_LIBRARY_PATH변수 를 올바르게 설정하는 랩퍼 스크립트가 있어야 합니다. 그러나 이러한 스크립트를 작성할 때는 LD_LIBRARY_PATH경로 구분 기호로 사용하는 콜론 사이에 문자열 의 빈 부분을 원하지 않기 때문에주의하십시오 . 예를 들어 변수가 처음에 비어있는 경우 경로가 잘못 될 수 있습니다 (콜론 앞에 빈 문자열이 나오면).

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

따라서 경로를 추가 할 때 먼저 빈 문자열을 테스트해야합니다. 예를 들어, 쉘 코드를 사용하는 경우 :

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app

2

다음을 포함하는 새 파일 /etc/ld.so.conf를 작성하십시오.

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

다음을 실행하여 동적 로더 캐시를 업데이트하십시오.

ldconfig

0

이외에 .bashrc도의 환경 변수를 설정 .profile. 이 파일은 세션에서 처리 및로드되므로 사용자로 실행중인 모든 항목에 영향을 미칩니다. 또한 :이 파일은 .bashrc존재하는 경우 Bash가 읽지 않는다고 말하지만 여전히 적용되는 것으로 보입니다 (Bash는 시작된 위치에서 X 세션을 상속하기 때문에). 그러나 두 파일 모두에 변수를 두는 것은 아프지 않습니다.


운없이 .profile을 만들려고했습니다.
dwj

우분투 (데비안?)의 "안전성"기능이 있는데 어딘가에서 .profile을로드 한 후 덮어 쓰기 때문에 시작시 LD_LIBRARY_PATH를 설정할 수 없습니다. 여전히 해결 방법이 있습니다.
alfC


0

부팅시 시스템 전체를 변경하려면 상단 근처의 /etc/bash.bashrc에 설정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.