运行Poco::NetSSL程序时提示libPocoCryptod.so.81未找到如何解决
Poco库动态链接错误排查方案
核心原因
错误提示搜索的libPocoCryptod.so.81是Debug版本的PocoCrypto库(文件名末尾的d为Debug版本标识),你当前/usr/local/lib目录下仅存在Release版本的库文件libPocoCrypto.so.81,版本不匹配是直接报错原因。
排查解决步骤
- 确认当前工程的构建模式:进入你的工程构建目录,执行命令
grep CMAKE_BUILD_TYPE CMakeCache.txt查看编译类型,若为Debug则会默认链接带d后缀的Debug版Poco依赖库。 - 若需要保留Debug构建模式:重新编译安装Poco源码,编译时开启Debug选项:
- 若用Poco官方构建脚本,添加
--debug参数 - 若用CMake构建Poco,添加参数
-DCMAKE_BUILD_TYPE=Debug
重新安装后即可生成带d后缀的Debug版本库文件。
- 若用Poco官方构建脚本,添加
- 若不需要Debug调试,切换工程为Release构建:执行cmake生成构建文件时添加参数
-DCMAKE_BUILD_TYPE=Release,编译出的程序会链接不带d后缀的Release版本Poco库,匹配你现有库文件。 - 最后确认动态库搜索路径配置:执行命令
ldconfig -p | grep PocoCrypto,如果没有输出匹配的库文件,将/usr/local/lib写入/etc/ld.so.conf.d/poco.conf文件,执行sudo ldconfig刷新系统动态库缓存即可。
补充优化
你的CMakeLists.txt中find_package指定了DataMySQL依赖,但target_link_libraries没有关联该模块,如果你代码中没有用到Poco的MySQL相关功能,可以删除find_package中的DataMySQL项,减少不必要的依赖检查。
内容的提问来源于stack exchange,提问作者Hector Toledo Soto
相关产品推荐
相关产品推荐

