답변:
PKG_CONFIG_PATH
pkg-config
.pc 파일을 검색 할 추가 경로를 지정하는 환경 변수입니다 .
이 변수는 pkg-config의 기본 검색 경로를 보강하는 데 사용됩니다. 일반적인 유닉스 시스템에서는 디렉토리 /usr/lib/pkgconfig
와 에서 검색합니다 /usr/share/pkgconfig
. 일반적으로 시스템에 설치된 모듈을 다룹니다. 그러나 일부 로컬 모듈은와 같은 다른 접두사에 설치 될 수 있습니다 /usr/local
. 이 경우 pkg-config가 .pc 파일을 찾을 수 있도록 검색 경로를 추가해야합니다.
이 pkg-config
프로그램은 시스템에 설치된 라이브러리에 대한 정보를 검색하는 데 사용됩니다. 주요 용도 pkg-config
는 프로그램을 라이브러리로 컴파일하고 링크하는 데 필요한 세부 정보를 제공하는 것입니다. 이 메타 데이터는 pkg-config 파일에 저장됩니다. 이 파일은 접미사 .pc를 가지며 pkg-config 도구에 알려진 특정 위치에 있습니다.
PKG_CONFIG_PATH
값 을 확인하려면 다음 명령을 사용하십시오.
echo $PKG_CONFIG_PATH
PKG_CONFIG_PATH
값 을 설정하려면 다음을 사용하십시오.
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
또는
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
첫 번째 대답은 기술적으로 충분히 명확하지 않습니다. 맨 페이지에서 (터미널을 열고을 입력하십시오 man pkg-config
) :
pkg-config
특수 메타 데이터 파일에서 패키지에 대한 정보를 검색합니다. 이 파일들은 패키지 이름을 따서 지어지며.pc
확장자가 있습니다. 대부분의 시스템에서pkg-config
의 모습/usr/lib/pkgconfig
,/usr/share/pkgconfig
,/usr/local/lib/pkgconfig
및/usr/local/share/pkgconfig
이러한 파일. 또한PKG_CONFIG_PATH
환경 변수로 지정된 디렉토리의 콜론으로 구분 된 (Windows에서는 세미콜론으로 구분 된) 목록을 찾습니다 .
따라서 pkg-config
프로그램은 PKG_CONFIG_PATH
디렉토리에 없습니다 . 그러나 라이브러리를 설치하는 경우 automake
스크립트에서 액세스 할 수 있도록 정보를 사용하려면 디렉토리 pkg-config
에 있어야합니다.
/usr/local/lib/x86_64-linux-gnu
무료로 자동 검색 위치 (공란 PKG_CONFIG_PATH
)와 .pc
GTK + 등을 포함하여 많은 파일 을 볼 수 있습니다. - 그곳에 살다. askubuntu.com/questions/449348/…
pkg-config
시스템에서 검색 할 기본 경로를 확인하는 방법을 보여줍니다 . askubuntu.com/a/373217/436580
pkg-config (버전 0.24 이상)가 기본적으로 설치된 라이브러리를 검색하는 위치를 보려면 다음 명령을 사용하십시오.
pkg-config --variable pc_path pkg-config
해당 경로를 수정하려면 PKG_CONFIG_PATH
환경 변수를 설정하십시오 . man 파일 상태 PKG_CONFIG_PATH
는 다음과 같습니다.
.pc 파일을 검색 할 콜론으로 구분 된 (Windows에서는 세미콜론으로 구분 된) 디렉토리 목록입니다. 기본 디렉토리는 경로를 검색 한 후에 항상 검색됩니다. 기본값은 libdir / pkgconfig : datadir / pkgconfig입니다. 여기서 libdir은 libdir입니다. 여기서 pkg-config이고 datadir은 pkg-config가 설치된 datadir입니다.
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
있고 여전히 기본 검색 디렉토리를 가질 수 있고 공백 이 아닌 값을 설정해도 기본값이 지워지지 않으므로 "수정하려면"대신 "해당 경로에 추가"라고 말해야 합니다.
위젯이라고 말하면 소프트웨어를 만들려고합니다. 위젯은 논쟁을 위해 다른 라이브러리 인 libcog에 의존합니다. 위젯의 빌드 프로세스 (아마도 configure 스크립트)는 pkg-config를 사용하여 libcog 사용 방법을 결정합니다. pkg-config는 libcog에 대해 아무것도 모릅니다.
libcog가 설치되어 있지 않으면 문제입니다. libcog의 표준 설치가 문제를 해결할 가능성이 높습니다. 시스템에 따라 추가 "개발자"버전의 패키지를 설치해야 할 수도 있습니다. 종종 끝에 "-devel"또는 "-dev"가 있으므로 "libcog"를 설치하는 경우 "libcog-devel"을 설치해야 할 수도 있습니다.
libcog가 설치된 경우 pkg-config가 찾을 수있는 방식으로 설치되지 않았을 수 있습니다. 시스템 어딘가에 libcog.pc 파일이있을 수 있습니다. 인수를 위해, 그것은 /opt/cog/lib/pkgconfig/libcog.pc에 있습니다. 이 경우 PKG_CONFIG_PATH를 libcog.pc를 포함하는 디렉토리로 설정하여 pkg-config에 알릴 수 있습니다. Bourne 쉘 또는 이와 유사한 것에서
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
완료되면 실패한 명령을 다시 실행하면 잘 작동합니다.
라이브러리 및 헤더 파일을 포함하여 libcog가 설치되어 있고 libcog.pc 파일이 없으면 제대로 작동하지 않습니다. 아마도 libcog의 표준 설치에는 정보가 포함되어 있거나 위젯은 정보에 의존하지 않을 것입니다. 먼저 libcog 재설치를 조사했습니다. libcog.pc 파일을 수동으로 생성 할 수 있지만, 올바른 라이브러리를 얻는 것은 어렵고 매우 구체적입니다.
64 비트 시스템의 맨 페이지를보고 약간 혼란 스러웠습니다. 한 줄로 말했습니다.
pkg-config는 특수 메타 데이터 파일에서 패키지에 대한 정보를 검색합니다. 이 파일들은 .pc 확장자를 가진 패키지 이름을 따서 명명됩니다. 기본적으로 pkg-config는이 파일에 대한 디렉토리 접두사 / lib / pkgconfig를 찾습니다. 또한 PKG_CONFIG_PATH 환경 변수에 의해 지정된 디렉토리의 콜론으로 구분 된 (Windows에서는 세미콜론으로 구분 된) 목록을 찾습니다.
나는 그것이 lib / pkgconfig 디렉토리에 있다고 가정했습니다. 디렉토리 자체를 밝혀냅니다. 제 경우에는 hello world gtk tutorial을 컴파일하려고했습니다. 예를 들어 원하는 파일을 찾습니다.
locate gtk | grep '\.pc'
결과는 다음과 같습니다.
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
마지막으로 수출했다.
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
man
현대의 다중 아키텍처 가능 시스템 에서 페이지가 어떻게 단순화 되는지를 +1 하십시오. 데비안 8 x86에서는 pkg-config
이미 x86_64 폴더를 보았 기 때문에 잠시 혼란 스러웠습니다 PKG_CONFIG_PATH
. 이것이 어떻게 통합되었는지는 확실하지 않지만 @GrandAdmiral이 보여주는 이것을 조사하는 명령 줄은 그것이 자신의 패키지에 --variable pc_path
대해 설정된 것에 의해 제어된다는 것을 나타냅니다 pkg-config
.
대부분의 답변에 필요한 것보다 많은 정보가있는 것 같습니다.
설치 한 소프트웨어는 (그리고 일반적으로) 일부 라이브러리 및 / 또는 헤더에 의존 할 수 있으며 시스템은 pkg-config를 사용하여 찾습니다.
따라서 pkg-config
사전 정의 된 (기본) 시스템 디렉토리에서이 파일을 찾습니다. 해당 폴더는 "접두사"입니다. 예를 들어 접두사 /usr/local
가 있는 라이브러리 에는 헤더가 있어야 /usr/local/include
하고 라이브러리 자체는에 있습니다 /usr/local/lib
.
그러나 pkg-config 는 환경 변수 PKG_CONFIG_PATH에 나열된 디렉토리에서도 라이브러리를 찾습니다 .
그런 다음 기본 폴더 목록 외부에 소프트웨어를 설치하는 경우 목록을 "조정"해야했던 디렉토리를 PKG_CONFIG_PATH에 추가하십시오.
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
자세한 내용은 여기 및 여기를 참조하십시오
PKG_CONFIG_PATH
( 사양) 파일 만 검색 할 추가 디렉토리를 지정 합니다. 라이브러리 검색 디렉토리와 같은 pkg 관련 항목에는 영향을 미치지 않습니다. yourPkg.pc
pkg-config
최신 버전의 axel 을 설치하려고 했는데 실행 한 결과입니다 ./configure
.
configure: error: Package requirements (openssl) were not met:
No package 'openssl' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SSL_CFLAGS
and SSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
그래서 나는 시도했다 :
$ pkg-config --cflags openssl
그리고 나는 얻었다 :
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found
분명히 openssl을 설치했습니다 ( sudo apt-get install openssl
). 그러나 위의 출력에서 "No package 'openssl'found"가 표시됩니다. 그래서 내가했는지 확인하십시오.
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
나는 확실히 다른 패키지가 필요하다는 것을 알았으므로 약간의 인터넷 검색 결과이 패키지를 설치해야한다는 것을 알았습니다.
sudo apt-get install libssl-dev
그리고이 모든 것은 pkg-config path env 변수 변경과 아무 관련이 없습니다.
https://github.com/confluentinc/confluent-kafka-go를 사용하는 사람들
librdkafka 설치를 따르십시오
이제 당신은 go install / go run go build를 사용할 수 있습니다