2013-12-15 133 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