3
我想安裝MongoDB-C驅動程序的新更新,但似乎編譯邏輯上阻止了包含以前安裝在「/ usr/local」目錄中的libbson庫(#include <bson.h>
) /」。Libbson和MongoDB-C驅動程序編譯
如何正確「鏈接」我的庫,以便同時使用#include <bson.h>
和#include <mongoc.h>
?
我想安裝MongoDB-C驅動程序的新更新,但似乎編譯邏輯上阻止了包含以前安裝在「/ usr/local」目錄中的libbson庫(#include <bson.h>
) /」。Libbson和MongoDB-C驅動程序編譯
如何正確「鏈接」我的庫,以便同時使用#include <bson.h>
和#include <mongoc.h>
?
libmongoc
和libbson
都是現在基於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
「問題」是我使用編譯自己的.c文件的應用程序。因此我不能使用命令「gcc $(pkg-config --cflags --libs libmongoc-1.0)myfile.c」 –
您可以使用編譯器選項手動指定路徑。在'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