2008年3月20日 星期四

Library 編譯參數免煩惱~好用的 pkg-config!

時常在編譯程式的時候,會遇到找不到某個 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 要下什麼參數才能使用了~


0 意見: