无法运行Streamlit应用,dlib Wheel构建失败求助(已尝试安装CMake)
解决dlib编译时subprocess-exited-with-error及cc1plus被终止的问题
错误原因
出现
Killed signal terminated program cc1plus本质是系统内存不足:编译dlib时启用了-j16(16线程)并行编译,大量并发任务耗尽内存,系统为保证稳定性终止了占用内存过高的编译进程,进而引发cmake构建失败。
解决方案
减少编译线程数
降低并行编译的线程数量,避免内存过载。执行以下命令安装dlib:pip install dlib --install-option="--build-option=-j4"
注:-j4代表使用4线程,可根据自身内存情况调整为-j2或-j1。临时增加系统内存(Linux环境)
通过创建swap文件补充虚拟内存,缓解内存不足问题:sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile编译完成后如果不需要swap,可执行
sudo swapoff /swapfile && sudo rm /swapfile删除。使用预编译包替代源码编译
跳过源码编译步骤,直接安装预编译好的dlib包:- Conda环境:
conda install -c conda-forge dlib - 也可针对自身系统和Python版本下载对应预编译wheel文件,用
pip install 文件名.whl安装。
- Conda环境:
检查并补全编译依赖
确保系统安装了所有必要的编译工具和依赖库:- Ubuntu/Debian系统:
sudo apt-get install build-essential cmake libopenblas-dev liblapack-dev libx11-dev libgtk-3-dev python3-dev - CentOS/RHEL系统:
sudo yum install gcc gcc-c++ cmake openblas-devel lapack-devel libX11-devel gtk3-devel python3-devel
- Ubuntu/Debian系统:
内容的提问来源于stack exchange,提问作者Ayush Nautiyal
相关产品推荐
相关产品推荐

