"pkg-config --variable pc_path pkg-config"에 나열된 특정 라이브러리 경로를 제외하는 방법은 무엇입니까?

"pkg-config --variable pc_path pkg-config"에 나열된 특정 라이브러리 경로를 제외하는 방법은 무엇입니까?

12.04에서 Ubuntu 14.04를 업그레이드하고 dist 업그레이드를 수행했습니다. 과거에는 ffmpeg, libglib 등 수동으로 많이 설치했습니다. 지금은 멋진 사용자 정의 배포판이 있고 잘 작동하지만 애플리케이션을 컴파일하는 데 문제가 있습니다. 이는 소스 코드에 수동으로 설치된 패키지와 기본 배포 라이브러리 간의 라이브러리 충돌로 인해 발생합니다. 한 사람이 이름을 바꾸라고 제안했지만 /usr/local다음에 재부팅했을 때 부팅에 실패했습니다.

pkg-configwith에 의해 추가된 디렉토리를 찾을 때

  pkg-config --variable pc_path pkg-config

그것은 나열

 /usr/local/lib/i386-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

나는 그것이 길을 찾는 것을 원하지 않는다/usr/local/lib...

pkg-config검색이 허용되지 않는 경로를 비활성화하려면 어떻게 해야 합니까 ?

답변1

의 콘텐츠는 /usr/local일반적으로 의 콘텐츠를 대체하므로 /usr"좋은 사용자 정의 배포"를 얻기 위해 라이브러리를 설치하고 싶지만 이에 대해 컴파일하고 싶지 않은 이유가 약간 혼란스럽습니다. 이는 시스템이 실제로 사용할 라이브러리입니다.

어쨌든 man pkg-config기본 검색 경로를 선언합니다.

libdir/pkgconfig:datadir/pkgconfig입니다. 여기서도서관 디렉토리pkg-config의 libdir이고 데이터 디렉토리 pkg-config의 datadir입니다.설치되면.

즉, 그 안에 컴파일되어 있음을 의미합니다. 나는 이것이 Fedora와 $PKG_CONFIG_PATH우분투 에서 다르다는 것을 알았습니다. 전자는 길고 포괄적인 반면, 후자는 짧고 독점적입니다. Fedora에서는 /usr/local.

$PKG_CONFIG_PATH경로를 확인했기 때문에첫 번째, 다음을 설정할 수 있습니다.

PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

이것이 내장 경로의 끝에 있다는 사실은 중요하지 않습니다. 검사가 거기에 도착했을 때 아무것도 찾지 못하면 아무것도 찾지 못할 것입니다.


이것이 어떻게 작동하는지 보여주기 위해 임시 디렉토리를 생성 /opt/bs/pkg하고 .pc기본 경로의 디렉토리 중 하나에서 파일을 복사합니다. 예를 들어 alsa.pc.check 먼저;

> pkg-config --libs alsa
-lasound

이제 들어가서 ( 필드 에 있음 ) .set 으로 /opt/bs/pkg/alsa.pc변경 하고 다시 시도하십시오.-lasoundLibs:-foobar$PKG_CONFIG_PATH

> PKG_CONFIG_PATH=/opt/bs/pkg pkg-config --libs alsa
-foobar

유레카, $PKG_CONFIG_PATH내장 경로는 이미 덮어씌워져 있습니다. /opt/bs/pkg물론 삭제할 수도 있습니다.

관련 정보