2015-06-08 2 views
0

Я хочу проверить pyrocksdb follwoing these шагов. После построения shared_lib и настройки pyrocksb (без серьезных проблем и строго следуя инструкции), я пытаюсь загрузить rocksdb из питона и получить следующую ошибку:Rocksdb сделать ошибку

>>>import rocksdb 
Traceback (most recent call last): 
File "", line 1, in 
File "/home/user/virtualenv/pyrocks/local/lib/python2.7/site-packages/rocksdb/__init__.py", line 1, in 
from ._rocksdb import * 
ImportError: /usr/local/lib/librocksdb.so: undefined symbol: clock_gettime 

Вопрос уже сообщался и описан более подробно here но в моем сознании еще не решили. Кто-то уже разработал исправление?

EDIT:

У меня есть работа. Окончательный намек был на this Обсуждение rockdb github. Как-то использование флага -lrt для компилятора g ++ кажется причиной ошибки, приводящей к отсутствующей ссылке. Быстрое исправление, как упоминалось, должно добавить флаг -no-as-needed непосредственно в качестве опции для компилятора g ++. См. here для более подробной информации.

Я только что запустил make, перестал копировать параметры и список флагов распечатки экрана. Вставьте указанную выше команду флажка в начале. Это заставило его работать :-)

Для меня команда г ++ выглядит следующим образом: см "-Wl, --no-по мере необходимости"

g++ -shared -Wl,--no-as-needed,-soname -Wl,librocksdb.so -g -Wall -Werror -Wno-sign-compare -I. -I./include -std=c++11 -DROCKSDB_PLATFORM_POSIX -DOS_LINUX -fno-builtin-memcmp -DROCKSDB_ATOMIC_PRESENT -DROCKSDB_FALLOCATE_PRESENT -DSNAPPY -DGFLAGS -DZLIB -DBZIP2 -DHAVE_JEMALLOC -O2 -fno-omit-frame-pointer -momit-leaf-frame-pointer -Woverloaded-virtual -fPIC -lpthread -lrt -lsnappy -lgflags -lz -lbz2 and so on .... 

ответ