時常在編譯程式的時候,會遇到找不到某個 Library 的 *.h 的問題,這個時候就要派出 pkg-config 來大顯神通了~
pkg-config 是一個會記住 Library 相關使用參數的好用工具,你可以利用它來取得編譯參數與其他有用的資訊。
pkg-config 通常會放在 /usr/bin/pkg-config
而設定檔通常會放在 /usr/lib/pkgconfig/*.pc
要用到某個 Library 之前就去 /usr/lib/pkgconfig 底下找找看相關的名字吧。
因為有時候 Library 的設定檔名稱後面會帶有版本號碼,不去看看的話很難猜出來到底應該指定的 Library 名稱是什麼。
假設有一個 test.c 要用到 dbus 這個 Library,這時 Makefile 可以寫成這樣:
Makefile
CFLAGS := $(shell pkg-config --cflags dbus-1)
LDFLAGS := $(shell pkg-config --libs dbus-1)
CC = gcc
LIBS=
SRCS=bluez-client.c
all:demo
demo:$(SRCS:.cpp=.o)
$(CC) $(CFLAGS) $(LDFLAGS)-o $@ $^ $(LIBS)
clean:
-rm -f demo
-rm -f *.o
簡單的透過 pkg-config --cflags dbus-1 就可以取得 dbus 的 CFLAGS,透過 --libs 參數同樣也可以取得 LDFLAGS。
如此一來以後就不用再擔心不知道 Library 要下什麼參數才能使用了~