在麒麟系统上运行代码时,如果遇到 subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1 这样的报错,通常意味着 Python 脚本尝试调用 C++ 编译器时失败了。根本原因往往是系统中没有安装 g++ 或 build-essential,或者虽然安装了但未加入 PATH 环境变量。
针对银河麒麟 V10(x86_64)环境,我根据网络情况总结了三种解决方案。如果电脑能联网,直接在线安装最省事;若无法联网,则需提前准备离线包或使用预编译的二进制文件。
方案一:在线安装(推荐)
这是最标准的方法,适用于有网络连接的环境。
首先更新系统的软件包索引,确保能找到最新的依赖:
sudo apt update
接着安装构建工具集合。build-essential 是一个元数据包,会自动拉取 gcc、g++、make 以及必要的库头文件:
sudo apt install -y build-essential
安装完成后,建议验证一下编译器是否生效。执行以下命令查看路径和版本:
which c++ which g++ which gcc
g++ --version
如果输出类似 /usr/bin/g++ 和版本号信息,说明环境已就绪。
方案二:离线安装(依赖包搬运)
对于完全断网的机器,需要找一台同版本的联网机器预先下载好 .deb 包。
-
下载依赖包 在联网机器上创建一个目录存放安装包,并只下载不安装:
mkdir -p ~/offline_gcc_pkgs
cd ~/offline_gcc_pkgs sudo apt install --download-only build-essential g++ gcc make -y
这会将所有需要的包下载到 `/var/cache/apt/archives/`。复制出来:
```bash
mkdir -p ~/offline_gcc_pkgs
cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/
-
打包传输 将文件夹压缩后通过 U 盘或内网传到离线机:
cd ~
tar -czvf offline_gcc_pkgs.tar.gz offline_gcc_pkgs/
3. **离线安装**
在离线机上解压并批量安装:
```bash
cd /home/greatwall
tar -xzvf offline_gcc_pkgs.tar.gz
cd offline_gcc_pkgs
sudo dpkg -i *.deb
注意: 此方法偶尔会遇到依赖缺失的提示,但在同一版本环境下通常能自动解决。安装后同样用 which 和 验证。

