首页 > 其他分享 >rocksdb安装与使用

rocksdb安装与使用

时间:2024-08-04 09:16:34浏览次数:10  
标签:undefined reference rocksdb debug so 使用 test 安装

首先要安装gcc 7.3以上版本,依赖于c++ 17.
参见
gcc 7安装及4.8.5和7.5并存
需要rpm方式或源码安装gflags 2.2,否则系统可能内置了gflags 2.1,从而导致链接时一直找不到gflags库。如下:
/tmp/ccUXmr9R.o: In function `__static_initialization_and_destruction_0(int, int)':
/home/zjh/test_gflags.cpp:4: undefined reference to `google::FlagRegisterer::FlagRegisterer<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
collect2: error: ld returned 1 exit status
离线库可从https://pan.baidu.com/s/1P-LAEfJQbJfhbsda1Cd0QQ?pwd=vcu5下载。
cd gflags-2.2.2
mkdir build && cd build
注意:记得先清理干净。

cmake -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DINSTALL_HEADERS=ON -DINSTALL_SHARED_LIBS=ON -DINSTALL_STATIC_LIBS=ON ..
make -j4
make install

tar -xzvf v8.5.4.tar.gz
cd rocksdb-8.5.4/
make static_lib
make shared_lib
 make 生成rocksdb辅助工具如db_bench等,注意默认生成的是debug模式,所以需要动态库和静态库先独立生产,然后再跑make。但是除了上面的动态库和静态库,最好是一次性跑make,不要单独跑make xxx   make db_bench报错,如下:

[zjh@hs-10-20-30-193 rocksdb-8.5.4]$ make db_bench
$DEBUG_LEVEL is 1, $LIB_MODE is shared
Makefile:166: Warning: Compiling in debug mode. Don't use the resulting binary in production
CCLD db_bench
tools/db_bench_tool.o: In function `rocksdb::CompressData(rocksdb::Slice const&, rocksdb::CompressionInfo const&, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
/home/zjh/cpp_demo/rocksdb-8.5.4/./util/compression.h:1583: undefined reference to `rocksdb::SyncPoint::GetInstance()'
tools/db_bench_tool.o: In function `void rocksdb::SyncPoint::Process<35ul>(char const (&) [35ul], void*)':
/home/zjh/cpp_demo/rocksdb-8.5.4/./test_util/sync_point.h:132: undefined reference to `rocksdb::SyncPoint::Process(rocksdb::Slice const&, void*)'
tools/db_bench_tool.o: In function `rocksdb::SimCache* rocksdb::static_cast_with_check<rocksdb::SimCache, rocksdb::Cache>(rocksdb::Cache*)':
/home/zjh/cpp_demo/rocksdb-8.5.4/./util/cast_util.h:22: undefined reference to `typeinfo for rocksdb::Cache'
tools/db_bench_tool.o:(.data.rel.ro._ZTIN7rocksdb12CacheWrapperE[_ZTIN7rocksdb12CacheWrapperE]+0x10): undefined reference to `typeinfo for rocksdb::Cache'
tools/db_bench_tool.o:(.data.rel.ro._ZTIN7rocksdb22FileChecksumGenFactoryE[_ZTIN7rocksdb22FileChecksumGenFactoryE]+0x10): undefined reference to `typeinfo for rocksdb::Customizable'
tools/db_bench_tool.o:(.data.rel.ro._ZTIN7rocksdb13EventListenerE[_ZTIN7rocksdb13EventListenerE]+0x10): undefined reference to `typeinfo for rocksdb::Customizable'
tools/db_bench_tool.o:(.data.rel.ro._ZTIN7rocksdb16CompactionFilterE[_ZTIN7rocksdb16CompactionFilterE]+0x10): undefined reference to `typeinfo for rocksdb::Customizable'
test_util/testutil.o:(.data.rel.ro._ZTIN7rocksdb18MemTableRepFactoryE[_ZTIN7rocksdb18MemTableRepFactoryE]+0x10): undefined reference to `typeinfo for rocksdb::Customizable'
test_util/testutil.o:(.data.rel.ro._ZTIN7rocksdb10ComparatorE[_ZTIN7rocksdb10ComparatorE]+0x18): undefined reference to `typeinfo for rocksdb::Customizable'
test_util/testutil.o:(.data.rel.ro._ZTIN7rocksdb23CompactionFilterFactoryE[_ZTIN7rocksdb23CompactionFilterFactoryE]+0x10): more undefined references to `typeinfo for rocksdb::Customizable' follow
test_util/testutil.o:(.data.rel.ro._ZTIN7rocksdb4test22ChanglingMergeOperatorE[_ZTIN7rocksdb4test22ChanglingMergeOperatorE]+0x10): undefined reference to `typeinfo for rocksdb::MergeOperator'
test_util/testutil.o:(.data.rel.ro._ZTIN7rocksdb15MockSystemClockE[_ZTIN7rocksdb15MockSystemClockE]+0x10): undefined reference to `typeinfo for rocksdb::SystemClockWrapper'
test_util/testutil.o:(.data.rel.ro+0x28): undefined reference to `typeinfo for rocksdb::MemTableRep'
tools/simulated_hybrid_file_system.o:(.data.rel.ro._ZTIN7rocksdb25SimulatedHybridFileSystemE[_ZTIN7rocksdb25SimulatedHybridFileSystemE]+0x10): undefined reference to `typeinfo for rocksdb::FileSystemWrapper'
collect2: error: ld returned 1 exit status
make: *** [db_bench] Error 1

但是rocksdb so已经存在了LD_LIBRARY_PATH指向的目录了。

make all时也报错,类似:

[zjh@hs-10-20-30-193 rocksdb-8.5.4]$ make all
$DEBUG_LEVEL is 1, $LIB_MODE is shared
Makefile:166: Warning: Compiling in debug mode. Don't use the resulting binary in production
CCLD table_reader_bench
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::DB'
./librocksdb_test_debug.so: undefined reference to `rocksdb::DBImpl::TEST_MaxNextLevelOverlappingBytes(rocksdb::ColumnFamilyHandle*)'
./librocksdb_test_debug.so: undefined reference to `rocksdb::DBImpl::TEST_WaitForCompact()'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::Env'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::ClearAllCallBacks()'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::Process(rocksdb::Slice const&, void*)'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::ClearCallBack(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::DBImpl'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::DisableProcessing()'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::MemTableRep'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::Cache'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::WritableFile'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::SystemClockWrapper'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::EnvWrapper'
./librocksdb_test_debug.so: undefined reference to `rocksdb::DBImpl::TEST_CompactRange(int, rocksdb::Slice const*, rocksdb::Slice const*, rocksdb::ColumnFamilyHandle*, bool)'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::LoadDependency(std::vector<rocksdb::SyncPoint::SyncPointPair, std::allocator<rocksdb::SyncPoint::SyncPointPair> > const&)'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::EnableProcessing()'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::MergeOperator'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::SequentialFile'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::Customizable'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::CompositeEnvWrapper'
./librocksdb_test_debug.so: undefined reference to `typeinfo for rocksdb::RandomAccessFile'
./librocksdb_test_debug.so: undefined reference to `rocksdb::DBImpl::TEST_WaitForFlushMemTable(rocksdb::ColumnFamilyHandle*)'
./librocksdb_test_debug.so: undefined reference to `rocksdb::SyncPoint::GetInstance()'
collect2: error: ld returned 1 exit status

原因:rocksdb.so和rocksdb.a用release版本编译,make使用debug,是不兼容的。

参见:https://github.com/facebook/rocksdb/issues/10072、https://github.com/facebook/rocksdb/issues/4329。

解决方法就是:用cmake编译release版本,或都是debug版。

delete db后,rocksdb仍然还有很多rocksdb:low, rocksdb:high线程,如下:

原因是:这俩是后台清理线程,详见https://blog.csdn.net/qq_30708747/article/details/120307971。

标签:undefined,reference,rocksdb,debug,so,使用,test,安装
From: https://www.cnblogs.com/lightdb/p/17738820.html

相关文章

  • Optional类的使用 java8(附代码)
    ......
  • 熟练使用linux常用基本命令梳理汇总
    目录Linux基本命令简单认识shell认识命令的基本格式:内建命令与外部命令查看命令的类型-type查看命令的使用方法-helpmkdirpwdtouchecho认识路径lscd认识热键/linux热键treenanocatgccstatrmrmdir基本认识--创建目录权限linux有多少条指令mansudocpmvwc>和>><morelessheadtail管......
  • JavaFX 如何使用内置的对话框
    消息对话框(Alert)JavaFX的Alert类别其实就是我们熟知的MessageDialog,根据消息类型的不同,分为几种不同的AlertType,在显示时也会有不同的图标以及不同的按钮。分类可列表如下:None:不分类的消息。常用于显示使用说明。Information:一般的提示消息。常用于提示目前程序运行的状态,以......
  • gogs的安装和使用(docker)
    1.docker安装gogs1.1拉取gogs镜像dockerpullgogs/gogs#也可改为自己需要的版本号 1.2创建存储目录mkdir/root/gogs 1.3 运行镜像 dockerrun--name=gogs-d-p10022:22-p13000:3000-v/root/gogs:/datagogs/gogs1.3.1指令解析 --name=gogs:指......
  • OpenStack Yoga版安装笔记(十二)nova安装(下)
    5、InstallandconfigurecontrollernodeforUbuntu注意安装版本为:nova25.2.2.dev55.1Prerequisites在安装和配置compute service之前,需要先创建数据库、服务凭证(用户名/密码)、服务API端点。1、Createthedatabase:root@controller:~#mysqlWelcometotheMariaDB......
  • ⭐神级Windows下载器-IDM-绿化版使用教程⭐
    1.IDM为何物?IDM官网:https://www.internetdownloadmanager.com/IDM 是一个多线程的下载器,帮助我们提升更快的下载速度。IDM的主要特点包括:● 下载速度:IDM可以通过多线程下载,也就是把文件分成多份下载以增快下载速度● 功能多样:IDM有智能下载,定时下载,抓取下载等功......
  • IPython的使用技巧2
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • go pkg包名,如何在pkg.go.dev发布golang软件包, package包名, import包名, git库名, g
    golang的包名在不同的地方作用不同,用途不同。在我们通过pkg.go.dev发布自己的包的时候,了解这些包名和他们的用途就很有必要了。下面我们以go语言中的pkg库 github.com/tekintian/strutils为例说明各种名称的区别和用途。如何在pkg.go.dev发布golang软件包要在pkg.go.dev发......
  • Docker常用容器安装
    Docker安装安装docker(centos)docker引擎安装官网地址:InstallDockerEngineonCentOS|DockerDocumentation手动安装#卸载旧版本sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-l......
  • Unittest框架的介绍及使用
    介绍基本概念​ unittest是Python自带的一个单元测试框架,它可以做单元测试,也能用于编写和运行重复的测试工作。它给自动化测试用例开发和执行提供了丰富的断言方法,判断测试用例是否通过,并最终生成测试结果.四大组件testcase:就是我们的测试用例,unittest中提供了一个......