You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 21环境下CMake运行C++代码时librocksdb.so.6.12共享库缺失问题求助

解决Ubuntu 21下RocksDB版本不匹配的动态链接错误

我完全懂你这种对着编译器报错抓耳挠腮的感觉——明明装了库,却死活找不到对应版本,太闹心了!咱们先把问题拆明白,再一步步解决:

错误原因分析

你遇到的error while loading shared libraries: librocksdb.so.6.12: cannot open shared object file本质是动态链接版本不匹配:你的程序(或者它依赖的某个第三方库)是针对RocksDB 6.12编译的,但你通过apt安装的系统版本是6.11.4,动态链接器找不到对应版本的共享库文件,自然就报错了。

一步步解决方案

1. 先定位“谁在找6.12版本”

首先搞清楚是你的代码本身依赖6.12,还是某个依赖库带的需求。用ldd命令检查你的可执行文件:

ldd ./your_compiled_executable | grep rocksdb

输出会显示当前程序依赖的RocksDB版本,以及找不到的库路径,帮你精准定位问题根源。

2. 方案一:升级RocksDB到6.12版本(推荐)

Ubuntu 21的官方apt仓库里RocksDB版本是6.11,所以得手动从源码编译安装6.12:

  • 先卸载现有apt安装的RocksDB:
    sudo apt purge librocksdb-dev librocksdb6.11
    sudo apt autoremove
    
  • 克隆RocksDB 6.12的稳定分支源码:
    git clone --branch v6.12.6 https://github.com/facebook/rocksdb.git
    cd rocksdb
    
  • 编译并安装共享库:
    make shared_lib -j$(nproc)  # -j后接CPU核心数,加速编译
    sudo make install-shared    # 安装共享库到/usr/local/lib
    sudo ldconfig               # 更新动态链接器缓存
    
  • 验证安装结果:
    ls -l /usr/local/lib/librocksdb*
    
    你应该能看到librocksdb.so.6.12相关的文件,动态链接器会优先搜索/usr/local/lib路径,之后再运行程序应该就能找到对应库了。

3. 方案二:让程序适配系统的6.11.4版本

如果不想升级RocksDB,就需要让你的代码和编译配置适配现有版本:

  • 检查CMake配置:如果你的CMakeLists.txt里硬编码了版本要求(比如find_package(RocksDB 6.12 REQUIRED)),改成不指定版本或者指定6.11:
    find_package(RocksDB REQUIRED)
    # 或者明确指定版本
    find_package(RocksDB 6.11 REQUIRED)
    
  • 清理旧编译产物:之前可能已经用6.12的配置编译过,所以要彻底清理build目录再重新编译:
    rm -rf build
    mkdir build && cd build
    cmake .. && make
    
  • 检查第三方依赖:如果是你链接的某个预编译第三方库依赖6.12,那要么换该库的兼容版本,要么还是得升级RocksDB(长期来看更稳妥)。

4. 临时 workaround:创建软链接(不推荐长期使用)

如果只是临时测试,可以通过软链接让系统“假装”有6.12版本的库:

sudo ln -s /lib/librocksdb.so.6.11.4 /lib/librocksdb.so.6.12
sudo ldconfig

⚠️ 注意:这个方法只是绕过了链接错误,RocksDB不同小版本之间可能存在API差异,运行时可能出现未知bug,只适合临时调试用。

为什么你之前的方法没生效?

  • 从源码编译时没指定shared_lib参数:默认make会生成静态库,不会生成动态库,所以你看不到librocksdb.so.6.12;
  • 旧编译产物没清理:即使修改了CMake配置,旧的可执行文件还是依赖6.12,所以必须彻底删除build目录重新编译;
  • 软链接没更新缓存:创建软链接后必须运行sudo ldconfig,不然动态链接器不会识别新的链接。

内容的提问来源于stack exchange,提问作者squishyvariably

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:27:43