apt-get 등으로 library 는 설치했는데 컴파일에 필요한 header 파일 들과 .so 파일들이 어디 있는지 찾기 힘드셨죠?
gcc 옵션에 -I (대문자 i) 는 header 파일들이 위치한 폴더를 지정하고 -L 은 lib 파일들이 위치한 폴더를 지정하고 -l (소문자 L) 은 특정 .so 파일을 지정합니다.
pkg-config 를 이용해서 설치된 library 들의 목록과 위 compile 옵션에 추가할 값들을 손쉽게 얻을 수 있습니다.
이미 설치되어 있는 경우가 대부분이겠지만 그렇지 않다면 아래와 같이 설치 하실 수 있습니다.
$ sudo apt-get install pkg-config
1. 설치된 library 목록 확인
$ pkg-config --list-all
shared-mime-info shared-mime-info - Freedesktop common MIME database
gmodule-no-export-2.0 GModule - Dynamic module loader for GLib
ncurses++ ncurses++ - ncurses 5.9 add-on library
form form - ncurses 5.9 add-on library
pthread-stubs pthread stubs - Stubs missing from libc for standard pthread functions
xt Xt - X Toolkit Library
xtrans XTrans - Abstract network code for X
gnome-icon-theme gnome-icon-theme - A collection of icons used as the basis for GNOME themes
menu menu - ncurses 5.9 add-on library
xdmcp Xdmcp - X Display Manager Control Protocol library
libpcreposix libpcreposix - PCREPosix - Posix compatible interface to libpcre
tic tic - ncurses 5.9 add-on library
gio-unix-2.0 GIO unix specific APIs - unix specific headers for glib I/O library
gupnp-1.0 gupnp-1.0 - GObject-based UPnP library
kbproto KBProto - KB extension headers
pm-utils pm-utils - Power management scripts for suspend and hibernate
zlib zlib - zlib compression library
...
grep 을 이용해서 원하는 library 가 설치되었는지 확인 할 수 있겠죠?
$ pkg-config --list-all | grep glib
gio-unix-2.0 GIO unix specific APIs - unix specific headers for glib I/O library
gio-2.0 GIO - glib I/O library
libsoup-2.4 libsoup - a glib-based HTTP library
glib-2.0 GLib - C Utility Library
2. --cflags
$ pkg-config --cflags glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
3. --libs
$ pkg-config --libs glib-2.0
-lglib-2.0
4. 컴파일에 적용
main.c: glib 을 이용한 아주 간단한 프로그램
#include <unistd.h>
#include <glib.h>
int main(int argc, char * args[]) {
g_print("Hello Glib!\n");
return 0;
}
compile:
$ gcc -o test main.c `pkg-config --cflags --libs glib-2.0`
아래와 같이 일일이 입력하지 않아도 되니 편합니다.
$ gcc -o test main.c -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0
실행:
$ ./test
Hello Glib!
5. 팁
한번에 여러 라이브러리 지정도 가능합니다.
$ pkg-config --cflags --libs glib-2.0 zlib jansson
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lglib-2.0 -lz -ljansson
완전 편리함
답글삭제감사합니다