Не удается динамически связать с библиотекой драйвера MongoDB c - PullRequest
0 голосов
/ 22 октября 2011

Я действительно озадачен тем, в чем может быть проблема.Я помещаю 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 голосов
/ 22 октября 2011

Обработка файла .a как объектного файла решила это. Однако следует иметь возможность рассматривать его как библиотечный файл. Это все еще не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...