WSL环境下编译Google Benchmark项目报错:No rule to make target
解决WSL Ubuntu中Google Benchmark编译时librt.so缺失问题
问题根源
编译报错是因为找不到librt.so库文件,这个库是Linux实时扩展库的链接文件,属于系统基础开发包。错误路径指向conda的sysroot目录,说明你的环境被conda的环境变量干扰,导致CMake错误地去conda的系统根目录查找系统库,而非Ubuntu原生的系统路径。
解决步骤
安装系统缺失的基础开发包
先确保Ubuntu系统中包含librt对应的开发组件,执行以下命令:sudo apt update sudo apt install -y libc6-dev在Ubuntu中,
librt.so实际是libc.so的符号链接,安装libc6-dev会自动生成这个链接并放在正确的系统路径/usr/lib/x86_64-linux-gnu/下。清除conda环境的干扰
如果当前终端处于conda激活状态,先退出环境:conda deactivate检查是否存在指向conda sysroot的CMake环境变量:
echo $CMAKE_SYSROOT若输出conda相关路径,执行命令清空:
unset CMAKE_SYSROOT重新编译项目
删除旧的构建目录,重新配置并编译:rm -rf build mkdir build && cd build cmake .. make(可选)在CMake中强制指定系统库路径
若不想每次手动处理conda环境,可在项目的CMakeLists.txt中添加以下配置,强制CMake使用Ubuntu原生系统库:# 禁用交叉编译模式,优先查找系统原生库 set(CMAKE_SYSROOT "/") set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
内容的提问来源于stack exchange,提问作者dopller
相关产品推荐
相关产品推荐

