2014-09-02 3 views
0

나는 /usr/lib 디렉토리에 libpng 1.12 (apt-get에 의한 우분투에서)를 설치했습니다. 1.14를 사용하여 다운로드 했으므로 컴파일하고 /usr/local/lib에 설치하십시오. 컴파일러/링커가/usr/locla의 라이브러리를 사용하게하려면 어떻게해야합니까?라이브러리의 다른 버전을 사용하는 방법

/usr/lib/libpng.so에서 /usr/lib/libpng12.so에서 /usr/local/lib/libpng.so까지 "바보 같은"방법 - 변경 링크를 시도했습니다. 프로그램은 컴파일되고 실행되며 (LD_LIBRARY_PATH=/usr/local/lib) 이전 버전으로 컴파일되었고 더 최신 버전으로 실행된다고하는 경고가 표시됩니다.

어떻게 제대로 할 수 있습니까? 대신 /usr/local/libpng14.so 또는 당신이 사용하는 어떤 이름과 경로 -lpng 사용을 사용하는 사전

답변

0

새 버전을 사용하여 (1) 컴파일 (2) 링크 및 (3)로드가 필요합니다.

새 버전으로 컴파일하려면 -I/path/to/includes/of/new/version 플래그 (아마도 -I/usr/local/include)를 사용하십시오.

새 버전과 링크하려면 -L /path/to/libs/of/new/version 링커 플래그 (귀하의 경우 -L /usr/local/lib)를 사용하십시오.

새 버전을로드하는 데는 여러 가지 방법이 있지만 가장 쉬운 방법은 아마도 -rpath 링커 플래그를 사용하는 것입니다. gcc 또는 g++으로 연결하는 경우 다음과 같이 사용하십시오 : -Wl,-rpath=/usr/local/lib. ld을 사용하는 경우 -rpath=/usr/local/lib 만 사용하십시오.

do /usr/lib의 항목을 터치하면 다음 소프트웨어 업데이트 후에 불타고 기존 소프트웨어가 손상 될 수 있습니다.

-rpath를 사용하는 경우 LD_LIBRARY_PATH를 사용할 필요가 없습니다. 다른 하나는 또는 중 하나를 사용할 수 있습니다.

1

응용 프로그램 연결에

감사 (우분투 12.04에 qmake를 프로젝트를 사용하고 있습니다).

+0

그냥 "-lpng14"도 작동해야합니다. 그러나 새로운 개발을한다면 현재 버전 인 libpng16을 사용하는 것이 좋습니다. –

+0

모든 답이 좋습니다. 글렌의 힌트는 내가 생각하기에 가장 간단하다. – BPiek

관련 문제