pkg - config 명령
리 눅 스 에 그렇게 많은 라 이브 러 리 가 있 는 지 없 는 지 를 어떻게 판단 하 는 지 몰 랐 습 니 다. 재 귀적 검색 에 의 한 것 일 까요?이제 야 나 는 내 zt 를 알 게 되 었 다. pkg - config 라 는 명령 과 / * lib / pkgconfig 아래 의 일부. pc 파일 이 야 말로 주인공 이다.
모든. pc 파일 은 라 이브 러 리 의 이름, 경로, 컴 파일 옵션 등 을 정의 합 니 다. 예 를 들 어 glib - 2.0. pc 파일:
prefix=/usr exec_prefix=${prefix} libdir=/usr/lib includedir=${prefix}/include
glib_genmarshal=glib-genmarshal gobject_query=gobject-query glib_mkenums=glib-mkenums
Name: Glib Description: C Utilitiy Library Version: 2.14.4 Libs: -L${libdir} -lglib-2.0 Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
configure 가 어느 순간 까지 pkg - config 명령 이 먼저 PKG 로 갑 니 다.CONFIG_PATH 가 정의 한 경로 에서 라 이브 러 리 이름 에 해당 하 는. pc 파일 을 검색 하고 찾 으 면 됩 니 다. 이따가 make 를 할 때 정규 표현 식 을 통 해 libs 와 cflags 의 값 을 꺼 내 사용 할 수 있 습 니 다. 그렇지 않 으 면 오 류 를 보고 할 수 있 습 니 다.
방금 pkg - config 알림 에 libgnomeui - 2.0 라 이브 러 리 가 없 었 습 니 다. 찾 아 봤 는데 이. pc 파일 을 찾 았 군요. 그런데 pkg - config 는 찾 을 수 없다 는 겁 니 다.나 는 머리 에 쥐 가 나 서 몇 분 동안 ~ /. bashrc 에 libgnomeui - 2.0 이 있 는 폴 더 경 로 를 PKG 에 추가 한 다 는 것 을 깨 달 았 다.CONFIG_PATH 아래:
1
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
그리고 source ~ /. bashrc 면 됩 니 다.
참고 로 컴 파일 은 공포 소설 못 지 않 게 짜릿 한 과정 이다.
새벽 에 시스템 이 고장 나 서 지금 다시 설치 하고 설정 을 잘 해서 새벽 상태 로 돌 아 왔 습 니 다. sigh - b
당신 은 유 닉 스에 서 소프트웨어 를 개발 한 적 이 있 습 니까?프로그램 을 다 쓰 고 컴 파일 이 정상적으로 작 동 합 니 다. 이 컴퓨터 에서 잘 작 동 하고 있 습 니 다. 원본 코드 관리 시스템 에 넣 으 십시오.그리고 동료 에 게 빼 서 써 도 된다 고 말 했다.이때, 당신 은 긴 한숨 을 내 쉬 었 습 니 다. 며칠 동안 의 일 은 헛 되 지 않 았 습 니 다. 얼마나 신선 한 공기 인지, 당신 은 떠 다 니 기 시 작 했 습 니 다.
"Hi, 왜 컴 파일 이 안 돼 요?" 당신 은 아직도 아름 다운 느낌 에 빠 져 있 습 니 다. 두 팔 에 힘 이 넘 쳐 서 당신 을 난처 하 게 할 만 한 문제 가 없 는 것 같 습 니 다.바로 이때, 그 바 보 는 이미 너 를 향 해 소 리 쳤 다.
"설마, 내 쪽 은 멀쩡 해!" 겉 으로 는 사양 하 는 말 이지 만, 사실 너 는 마음속 으로 이미 욕 을 퍼 부 었 으 니, 정말 멍청 하 다. 머리 를 왜 쓰 는 지 모르겠다.아마, 네가 생각 한 것 이 맞 을 것 이다. 지난번 에 그 가 간단 한 실 수 를 했 는데, 네가 가 자마자 해결 하지 않 았 니?
그 가 세 번 소 리 를 지 른 후에 너 는 어 쩔 수 없 이 네 손 에 있 는 일 을 내 려 놓 아야 한다. 방금 그 아름 다운 느낌 은 이미 온데 간 데 없 이 사 라 졌 다. 그렇지 않 으 면 네가 감정 을 잘 컨트롤 하지 않 으 면 화가 그 에 게 쏟 아 질 것 이다.너 는 그의 컴퓨터 앞 에 가서 make 를 입력 하고 우아 하 게 차 를 눌 러 라.어떻게 틀 릴 수가 있 지?너 는 자신만만 하 다.그러나 스크린 의 결 과 는 다소 얼굴 이 빨 개 졌 다. 빌어먹을, libxxx. so 가 어떻게 못 하 게 할 수 있 겠 는가?
당신 은 / usr 디 렉 터 리 에서 libxxx. so 를 찾 으 면 모든 것 이 당신 의 눈 을 피 할 수 없습니다.이상 하 다, libxxx. so 가 왜 / usr / local / lib 아래 있 지? / usr / lib 아래 있어 야 되 는 거 아니 야?이것 은 다른 사람 을 탓 해 서 는 안 됩 니 다. 다른 사람 이 어디 에 설치 하고 싶 어도 좋 습 니 다. 다음 에는 / lib 디 렉 터 리 에 설치 할 수 있 습 니 다.
이상 의 장면 은 허구 가 아니 라 저 는 여러 번 겪 었 습 니 다. 분명히 이 기계 에서 잘 있 고 다른 사람의 기계 에서 컴 파일 도 통과 하지 못 했 습 니 다.두 사람의 운영 체제 가 똑 같 을 수도 있 고 필요 한 라 이브 러 리 가 모두 설치 되 어 있 을 수도 있 습 니 다. 다만 개인의 취향 이 다 르 기 때문에 서로 다른 디 렉 터 리 에 설치 되 어 있 을 뿐 입 니 다.이런 상황 에 부 딪 히 면 매번 기술적 으로 돌아 가 고 패 치 형 방법 으로 다른 곳 에서 일 을 할 수 있 을 지 궁금 하 다.
오늘 우리 가 소개 할 pkgconfig 는 상기 문 제 를 해결 하기 위해 아름 다운 방안 을 제공 합 니 다.이제 너 는 다 시 는 이 때문에 걱정 하지 않 을 것 이다.Pkgconfig 는 다음 과 같은 몇 가지 기능 을 제공 합 니 다.
1. 라 이브 러 리 의 버 전 번 호 를 검사 합 니 다.필요 한 라 이브 러 리 버 전이 요구 에 부합 되 지 않 으 면 잘못된 버 전의 라 이브 러 리 파일 을 연결 하지 않도록 오류 정 보 를 출력 합 니 다.
2. 매크로 정의, 헤더 파일 의 위치 와 같은 컴 파일 예비 처리 파 라 메 터 를 가 져 옵 니 다.
3. 라 이브 러 리 및 의존 하 는 다른 라 이브 러 리 의 위치, 파일 이름 및 기타 연결 매개 변 수 를 가 져 옵 니 다.
4. 의존 하 는 다른 라 이브 러 리 의 설정 을 자동 으로 추가 합 니 다.
이 모든 것 은 자동 입 니 다. 라 이브 러 리 파일 은 어디 에 설치 해도 괜 찮 습 니 다!
사용 하기 전에 pkgconfig 의 원 리 를 말씀 드 리 겠 습 니 다. pkgconfig 는 요정 이 아니 라 이상 의 정 보 를 얻 을 수 있 습 니 다.사실 pkgconfig 가 이러한 정 보 를 얻 을 수 있 도록 라 이브 러 리 공급 자 에 게. pc 파일 을 제공 하도록 요구 합 니 다.예 를 들 어 gtk + - 2.0 의 pc 파일 내용 은 다음 과 같다.
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
target=x11
gtk_binary_version=2.4.0
gtk_host=i386-redhat-linux-gnu
Name: GTK+
Description: GIMP Tool Kit (${target} target)
Version: 2.6.7
Requires: gdk-${target}-2.0 atk
Libs: -L${libdir} -lgtk-${target}-2.0
Cflags: -I${includedir}/gtk-2.0
이 파일 은 보통 / usr / lib / pkgconfig / 또는 / usr / local / lib / pkgconfig / 에 놓 여 있 습 니 다. 물론 X11 과 관련 된 pc 파일 은 / usr / X11R6 / lib / pkgconfig 아래 에 놓 여 있 습 니 다.pkgconfig 에서 pc 파일 을 찾 을 수 있 도록 pc 파일 이 있 는 경 로 를 환경 변수 PKG 에 설정 하 십시오.CONFIG_PATH 리.
사용 방법 은 매우 간단 합 니 다. 예 를 들 어 gtk + 라 이브 러 리 를 사용 하여 프로그램 을 컴 파일 해 야 합 니 다.
gcc -g arrow.c -o arrow `pkg-config "gtk+-2.0 > 2.0.0" --cflags --libs`
gtk + 2.0 만 설치 하면 어디 에 있 든 컴 파일 은 정상 입 니 다.이거 너무 쉬 운 거 아니 야?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java swing drawImagegetImage 가 즉시 돌아 오기 때문에 그림 이 불 러 올 때 까지 기다 리 지 않 고 프로그램 에서 다른 작업 을 수행 할 수 있 습 니 다.성능 을 향상 시 킬 수 있 지만 효과 적 인 프로그램 은 더 많은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.