Как исправить ошибку поиска символа в клиенте MongoDb C - PullRequest
0 голосов
/ 04 ноября 2018

Когда я запускаю тестовое приложение hello_mongoc (переименованное в mongotest), вывод выглядит так:

{ "ok" : 1 }
./mongotest: symbol lookup error: /usr/local/lib/libmongoc-1.0.so.0: undefined symbol: bson_validate_with_error

Приложение построено с:

cc -o mongotest mongotest.o -lmongoc-1.0 -lbson-1.0

и не выдает предупреждений / ошибок компиляции.

Это в / usr / local / lib:

lrwxrwxrwx  1 root staff      16 Oct  5 11:38 libbson-1.0.so -> libbson-1.0.so.0
lrwxrwxrwx  1 root staff      20 Oct  5 11:38 libbson-1.0.so.0 -> libbson-1.0.so.0.0.0
-rw-r--r--  1 root staff  549180 Oct  5 11:29 libbson-1.0.so.0.0.0
-rw-r--r--  1 root staff  744738 Oct  5 11:30 libbson-static-1.0.a
lrwxrwxrwx  1 root staff      18 Oct  5 11:38 libmongoc-1.0.so -> libmongoc-1.0.so.0
lrwxrwxrwx  1 root staff      22 Oct  5 11:38 libmongoc-1.0.so.0 -> libmongoc-1.0.so.0.0.0
-rw-r--r--  1 root staff 2162580 Oct  5 11:31 libmongoc-1.0.so.0.0.0
-rw-r--r--  1 root staff 3553982 Oct  5 11:33 libmongoc-static-1.0.a

Я бегу на малине пи 3B +

1 Ответ

0 голосов
/ 04 ноября 2018

Согласно libbson source , bson_validate_with_error было добавлено в 1.7.0, в то время как у вас есть 1.0.

РЕДАКТИРОВАТЬ 1:

Кажется, это проблема компоновщика. Больше информации в комментариях ниже.

РЕДАКТИРОВАТЬ 2:

Одним из способов решения этой проблемы является использование статических ссылок:

gcc -o mongotest mongotest.c $(pkg-config --libs --cflags libmongoc-static-1.0)
...