无法动态链接到MongoDB c驱动程序库

时间:2011-10-22 11:27:53

标签: c mongodb

我真的很困惑,问题是什么。我把 libbson.a libbson.so libmongoc.a libmongoc.so 与我的可执行文件位于同一文件夹中。头文件也在同一个文件夹中。 然后我make用它:

CFLAGS += -I. -std=c99 $(shell pkg-config --cflags json) \
          $(shell pkg-config --cflags glib-2.0) 
LDFLAGS +=  -Wl,-rpath,/usr/local/lib $(shell pkg-config --libs glib-2.0) \
            $(shell pkg-config --libs json) -lpcre -L. -Wl,-rpath,. \
            -lmongoc -lbson


all: main.o
    gcc $(LDFLAGS) -ggdb main.o -o main

main.o: main.c
    gcc $(CFLAGS)-ggdb  -c main.c

编译工作,但当我尝试运行它时,动态链接器会抱怨! ldd main显示了这一点:(为什么它只抱怨lbson而不显示lmongoc?)

linux-vdso.so.1 =>  (0x00007fffb2fc9000)
    libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fd0dd9bd000)
    libjson.so.0 => /usr/local/lib/libjson.so.0 (0x00007fd0dd7b5000)
    libpcre.so.0 => /lib64/libpcre.so.0 (0x00007fd0dd57f000)
    libbson.so.0.4 => not found
    libc.so.6 => /lib64/libc.so.6 (0x00007fd0dd212000)
    librt.so.1 => /lib64/librt.so.1 (0x00007fd0dd009000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fd0ddcaf000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd0dcdec000)

关于.a文件的信息有点稀疏,但据我所知,链接应该和.so文件一样发生吗?

1 个答案:

答案 0 :(得分:0)

像对象文件一样处理.a文件解决了它。但是,它也应该像库文件一样对待它。这仍然不起作用。