Rocksdb会出错

时间:2015-06-08 10:07:44

标签: python-2.7 rocksdb

我想测试pyrocksdb以及these步骤。在构建shared_lib并设置pyrocksb(没有重大问题并严格遵循这些步骤)之后,我尝试从python加载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,但在我看来还没有解决。有人已经解决了问题吗?

编辑:

我得到了它的工作。最后的提示是关于this rocksdb github的讨论。不知何故,g ++编译器的-lrt标志的使用似乎导致错误导致缺少链接。如上所述的快速修复是直接添加--no-as-need标志作为g ++编译器的选项。有关详细信息,请参阅here

我刚刚运行make,停止复制屏幕打印输出的选项和标志列表。在开头插入上面的可选标志命令。这使它工作: - )

对我来说,g ++命令看起来像这样:请参阅“-Wl, - no-as-needed”

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 ....

1 个答案:

答案 0 :(得分:0)

感谢PlagTag。我们添加了" -Wl, - no-as-needed"到我们的Makefile:https://github.com/facebook/rocksdb/commit/d03f110904682a340137af07264eb8e148e3477d