【问题标题】:Libbson and MongoDB-C driver compilationLibbson 和 MongoDB-C 驱动编译
【发布时间】:2013-12-15 22:21:11
【问题描述】:

我想安装 MongoDB-C 驱动程序的新更新,但似乎编译逻辑阻塞,同时包含以前安装在目录“/usr/local/”中的 libbson 库 (#include <bson.h>)。

如何正确“链接”我的库以同时使用#include <bson.h>#include <mongoc.h>

【问题讨论】:

    标签: c makefile bson libtool mongodb-c


    【解决方案1】:

    libmongoclibbson 现在都是基于 automake 的项目(./configure、make、make install)。他们还安装了 pkg-config *.pc 文件,这些文件可用于使用 pkg-config 程序发现库安装和头文件路径。如果您已安装到 /usr/local,则可能需要设置 PKG_CONFIG_PATH=/usr/local/lib/pkg-config(或 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 $@ -c $(DEBUG) $(WARNINGS) $(OPTS) $(CFLAGS) $*.c
    
    myprog: myprog.o
        $(CC) -o $@ $(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
    猜你喜欢
    • 2011-11-19
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多