
보통 inherit pkgconfig로 사용된다.
openembedded-core/meta/classes/pkgconfig.bbclass가 있는데 내용은 아래와 같다.
DEPENDS:prepend = "pkgconfig-native "
$TMPDIR/work/x86_64-linux/pkgconfig-native가 있다는 건데?
-I/usr/include/glib-2.0, -lglib-2.0 과 같이 설정 했던 것이 기억나는가?/usr/local과 같은 경로에 있다면, 일일히 옵션을 적어줘야한다.pkgconfig가 도와준다.-I${includedir}/foo, -L${libdir} -lfoo.pc 파일로 관리가 된다./usr/lib/pkgconfig/usr/local/lib/pkgconfig.pc파일의 예
Name: 라이브러리 | 패키지이름으로 사람에게 읽힐 용도로 사용한다.pkg-config 툴에서 사용하는 .pc파일의 파일 이름과는 별개DescriptionURLVersion
이 패키지를 가져다가 사용하는 다른 패키지에 영향을 줄 수 있는 부분이다.pkg-config 시스템은 RPM의 버전 비교 알고리즘을 사용한다..과 숫자로만 이루어진 형태를 사용해야 한다.
Requires: 이 패키지가 Depend하는 다른 패키지 이름의 목록으로 공백으로 구분한다.Requires.private: 이 패키지가 Depend하는 다른 패키지의 이름 목록으로 공백으로 구분한다.Requires와는 다르게, 패키지 안에서만 사용하며, 이 패키지를 가져다 사용하는 애플리케이션에는 사용할 필요 없을 패키지를 나열한다.Conflicts (optional): 패키지와 충돌을 일으키는 다른 패키지를 목록 형식으로 정의한다. 버전을 지정하는 형식은 Requires와 같다. Conflicts: bar < 1.2.3, bar >= 1.3.0 형식으로 같은 패키지를 두 번 정의하는 것도 가능하다.Cflags: 외부에서 이 패키지를 가져다 컴파일할 때 사용하는 컴파일러 옵션 플래그로, 이 패키지에서 의존하는 컴포넌트가 pkg-config 파일을 지원하지 않아서 컴파일러 옵션을 지정하도록 전달하기 위해 사용된다.pkg-config를 지원한다면 Requires나 Requires.private에 이름만을 나열해야 한다.Libs: 외부에서 이 패키지를 가져다 링크할 때 사용하는 링크 옵션 플래그로, Cflags와 마찬가지로 이 패키지에서 Public하게 의존하는 컴포넌트가 pkg-config파일을 지원하지 않는 경우 링크 옵션을 지정하도록 전달하기 위해 사용한다.pkg-config 파일을 지원한다면 Requires나 Requires.private에 지정해야한다.Libs.private: 외부에서 이 패키지를 가져다가 정적 링크할 때 사용하는 링크 옵션 플래그다. 이 패키지가 의존하여 사용하는 다른 패키지를 링크하는 옵션 플래그로 이 패키지를 가져다가 사용하는 애플리케이션에서 직접 사용할 필요 없을 패키지에 대한 링크 옵션 플래그이다. 이 패키지에서 의존하는 컴포넌트가 pkg-config 파일을 지원한다면, Requires나 Requires.private에 지정해야한다.
pkg-config파일이 라으벌리 하나만을 대표하는 것이 가장 좋으며, 이 때에는 패키지, 라이브러리 '마다' pkg-config 파일 하나씩 생성해야한다.libfoo.so라면, libfoo.'pc' 라고 파일명을 짓자..pc 파일 이름이 내 패키지를 가리킬 수 있도록, 다른 .pc파일과 겹치지 않는 파일 이름을 가지자.foo.pc, foolib.pc도 파일 이름으로 사용할 수 있다.$PKG_CONFIG_PATH/usr/lib/pkgconfig, /usr/share/pkgconfigpkg-config를 위치시킨다./usr/local/lib/pkgconfig에 있는 경우도 있는데 이경우, export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig그럼 여튼, 내 프로그램이 라이브러리 x를 사용하려 한다.
$ gcc $(pkg-config --cflags --libs x) myapp.c -o myapp


