自定义路径部署whisper.cpp后CMake运行时找不到libwhisper.so.1
解决自定义路径下libwhisper.so.1无法加载的问题
方法1:确保whisper.cpp安装时生成正确的路径配置
编译安装whisper.cpp到自定义路径时,明确指定安装前缀并开启共享库编译:
cd whisper.cpp mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/home/me/MyPrj/src/whisperLib -DBUILD_SHARED_LIBS=ON make && make install
完成后,whisper的CMake配置文件会存放在/home/me/MyPrj/src/whisperLib/lib/cmake/Whisper目录下,确保后续项目能正确识别路径。
方法2:在项目CMakeLists.txt中正确配置导入与RPATH
避免手动设置RPATH,用CMake的find_package自动导入库,并启用RPATH相关选项:
# 指定whisper配置文件的位置 set(Whisper_DIR "/home/me/MyPrj/src/whisperLib/lib/cmake/Whisper") find_package(Whisper REQUIRED) # 启用RPATH,确保运行时能找到库路径 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) # 链接目标程序与whisper库 add_executable(your_app your_app.cpp) target_link_libraries(your_app PRIVATE Whisper::whisper)
重新编译项目:
cd your_project rm -rf build && mkdir build && cd build cmake .. && make && make install
编译后的可执行文件会自动包含正确的RPATH,运行时可直接找到自定义路径下的库。
方法3:直接添加自定义库路径到系统搜索列表
如果CMake配置仍未生效,可通过系统层面让库路径被识别:
- 临时生效(当前终端会话):
export LD_LIBRARY_PATH=/home/me/MyPrj/src/whisperLib/lib:$LD_LIBRARY_PATH
执行后直接运行程序即可。
- 永久生效(当前用户):
编辑~/.bashrc或~/.profile文件,添加:
export LD_LIBRARY_PATH=/home/me/MyPrj/src/whisperLib/lib:$LD_LIBRARY_PATH
保存后执行source ~/.bashrc使配置生效。
- 系统级永久生效:
创建文件/etc/ld.so.conf.d/whisper.conf,写入内容:
/home/me/MyPrj/src/whisperLib/lib
执行以下命令更新系统库缓存:
sudo ldconfig
方法4:排查ldd无引用的异常问题
若ldd输出未显示libwhisper相关条目,可通过以下命令检查:
- 查看可执行文件的RPATH设置:
readelf -d your_app | grep RPATH
确认是否包含自定义库路径。
2. 检查库文件本身的存在性与依赖:
ldd /home/me/MyPrj/src/whisperLib/lib/libwhisper.so.1
确保库文件存在且自身依赖能正常加载。
内容的提问来源于stack exchange,提问作者Raphael10
相关产品推荐
相关产品推荐

