在 x86_64 架构的麒麟系统上运行 Python 代码时,若出现 subprocess.CalledProcessError 报错提示找不到 c++ 编译器,通常是因为系统未安装 g++ 或 build-essential 工具链。
出现这个问题的原因是 Python 或系统脚本调用 which c++ 时,系统没有找到 c++ 编译器。其根本原因可能是:
- 系统中没有安装 g++ 或 build-essential;
- 或者虽然安装了,但没有加入 PATH;
- 或者安装到了非默认路径(比如 /home/xxx/mygcc)。
针对无法联网的环境,可采用以下方式进行安装。
1、在线安装
1、更新索引
sudo apt update
这一步会刷新系统的包列表,确保后续安装不会提示找不到包。
2、安装编译器与工具
执行以下命令安装:
sudo apt install -y build-essential
build-essential 是一个集合包,会自动安装以下关键工具:
- gcc(C 编译器)
- g++(C++ 编译器)
- make(编译构建工具)
- libc-dev(C 库头文件)
3、验证是否安装成功
依次执行下面命令验证:
which c++ which g++ which gcc
如果安装成功,会返回类似路径:
/usr/bin/c++ /usr/bin/g++ /usr/bin/gcc
再检查版本号:
g++ --version
输出示例:
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
2、离线安装
离线安装可能需要有一个联网的相同版本的电脑或者虚拟机,在可以联网的电脑上把需要的包都下载下来。
1、在联网的麒麟虚拟机上下载离线安装包
创建一个目录存放离线包:
mkdir -p ~/offline_gcc_pkgs
cd ~/offline_gcc_pkgs
下载 build-essential 及依赖包(不安装,只下载):
sudo apt install --download-only build-essential g++ gcc make -y
这一步会把所有 .deb 文件下载到系统缓存目录:
/var/cache/apt/archives/
收集全部依赖包到一个文件夹:
mkdir -p ~/offline_gcc_pkgs
cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/

