2013-12-15 178 views
3

我想安裝MongoDB-C驅動程序的新更新,但似乎編譯邏輯上阻止了包含以前安裝在「/ usr/local」目錄中的libbson庫(#include <bson.h>) /」。Libbson和MongoDB-C驅動程序編譯

如何正確「鏈接」我的庫,以便同時使用#include <bson.h>#include <mongoc.h>

回答

2

libmongoclibbson都是現在基於automake的項目(./configure,make,make install)。他們還會使用pkg-config程序安裝可用於發現庫安裝和標題路徑的pkg-config * .pc文件。如果您已經安裝到/ usr/local,即你可能需要設置PKG_CONFIG_PATH =在/ usr/local/lib目錄/ pkg配置(或lib64目錄),取決於你的系統會自動包括該路徑。

一個簡單的方法來建立對他們是做:

gcc $(pkg-config --cflags --libs libmongoc-1.0) myfile.c 

如果你在一個Makefile,你需要先付錢。當我使用GNU make時,通常會這樣做:

LIBS := $(shell pkg-config --libs libmongoc-1.0) 
CFLAGS := $(shell pkg-config --cflags libmongoc-1.0) 
DEBUG := -ggdb 
OPTS := -O2 
WARNINGS := -Wall -Werror 

%.o: %.c %.h 
    $(CC) -o [email protected] -c $(DEBUG) $(WARNINGS) $(OPTS) $(CFLAGS) $*.c 

myprog: myprog.o 
    $(CC) -o [email protected] $(DEBUG) $(WARNINGS) $(OPTS) $(LIBS) myprog.o 
+0

「問題」是我使用編譯自己的.c文件的應用程序。因此我不能使用命令「gcc $(pkg-config --cflags --libs libmongoc-1.0)myfile.c」 –

+0

您可以使用編譯器選項手動指定路徑。在'gcc'上,這會是'gcc -L/usr/local/lib -I/usr/local/include/libbson-1.0 -I/usr/local/include/libmongoc-1.0 -lbson-1.0 -lmongoc- 1.0 my_program.c' – user2562047