运行代码报错subprocess.CalledProcessError:Command ‘[‘which‘,‘c++‘]‘ returned non-zero exit status 1.

我现在是要在x86_64麒麟系统电脑上运行我的代码,结果出现下面的报错信息:

subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1 

出现这个问题的原因是Python 或系统脚本调用 which c++ 时,系统没有找到 c++ 编译器。其根本原因可能是:

  • 系统中没有安装 g++ 或 build-essential;
  • 或者虽然安装了,但没有加入 PATH
  • 或者安装到了非默认路径(比如 /home/xxx/mygcc)。 

然后我就开始尝试安装这个g++,我的系统是 银河麒麟 V10(x86_64),电脑不能联网,所以就分为在线安装离线安装两种形式。

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、在联网的麒麟虚拟机上下载离线安装包

1️⃣ 创建一个目录存放离线包

mkdir -p ~/offline_gcc_pkgs cd ~/offline_gcc_pkgs 

2️⃣下载 build-essential 及依赖包(不安装,只下载)

sudo apt install --download-only build-essential g++ gcc make -y 

这一步会把所有 .deb 文件下载到系统缓存目录:

/var/cache/apt/archives/ 

2、收集全部依赖包到一个文件夹

把所有下载好的包复制出来:

mkdir -p ~/offline_gcc_pkgs cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/ 

(如果你之前安装过别的软件,可能会夹杂其他包,可以先清理旧缓存)

可选清理再下载的做法:

sudo apt clean sudo apt update sudo apt install --download-only build-essential g++ gcc make -y mkdir -p ~/offline_gcc_pkgs cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/ 

3、打包成一个可移动文件夹

把离线安装包打包成一个压缩包:

cd ~ tar -czvf offline_gcc_pkgs.tar.gz offline_gcc_pkgs/ 

💡 生成的文件:

~/offline_gcc_pkgs.tar.gz 

就是完整的离线安装包。

4、复制到离线电脑

使用 U 盘 或 内网共享将该压缩包复制到离线电脑,例如:

/home/greatwall/ 

然后在离线电脑上执行:

cd /home/greatwall tar -xzvf offline_gcc_pkgs.tar.gz cd offline_gcc_pkgs 

5、在离线电脑上离线安装

执行以下命令一次性安装全部包:

sudo dpkg -i *.deb 

如果提示依赖问题(但无法联网),你可以先忽略;
通常这些依赖都已经在离线包里。

安装结束后验证:

which c++ which g++ which gcc g++ --version 

输出应类似:

/usr/bin/c++ /usr/bin/g++ /usr/bin/gcc g++ (Ubuntu 9.3.0) 9.3.0 

✅ 表示离线安装成功。

由于我按照步骤使用离线安装没有安装成功,还是出现那个问题,所以后面就换了一种新方法,下载“预编译好的 GCC 二进制包”(实测有效)

1️⃣ 去这里下载:

xPack 项目的官方预编译版(稳定、安全、适合 x86_64 Linux)

gcc-xpack - 浏览 /v11.5.0-1 at SourceForge.net

找到版本:(根据自己的需要找对应的版本)

xpack-gcc-12.2.0-1-linux-x64.tar.gz 

2️⃣ 拷贝到你的系统,比如:

/home/greatwall/mygcc/ 

3️⃣ 解压:

cd /home/greatwall/mygcc tar -xvf xpack-gcc-12.2.0-1-linux-x64.tar.gz 

会得到目录类似:

/home/greatwall/mygcc/xpack-gcc-12.2.0-1/ 

4️⃣ 配置环境变量:

echo 'export PATH=/home/greatwall/mygcc/xpack-gcc-12.2.0-1/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/home/greatwall/mygcc/xpack-gcc-12.2.0-1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc 

5️⃣ 验证:

g++ --version gcc --version 

✅ 若输出 12.2.0,说明成功!

Read more

在Ubuntu上安装OpenClaw主要有两种主流且官方推荐的方式:一键脚本安装(适合新手和快速部署)和 Docker 安装(适合需要环境隔离和生产环境部署)

在Ubuntu上安装OpenClaw主要有两种主流且官方推荐的方式:一键脚本安装(适合新手和快速部署)和 Docker 安装(适合需要环境隔离和生产环境部署)。此外,对于开发者或需要特定版本的用户,也可以选择从源码安装。 以下是针对Ubuntu系统的详细操作步骤分解。 ⚙️ 第一步:系统准备与依赖安装 在开始之前,需要确保你的Ubuntu系统(建议使用22.04或24.04 LTS版本)已经准备好必要的工具。 1. 打开终端。 安装基础工具链:安装后续步骤中可能用到的curl、git等工具。 sudoaptinstall-ycurlwgetgit build-essential 更新系统包:这是为了避免因系统包过旧而导致的依赖冲突。 sudoapt update &&sudoapt upgrade -y 🚀 第二步:选择并执行安装方法 你可以根据自身需求,从以下三种方法中选择一种进行安装。 方法一:一键脚本安装(最推荐) 这是官方推荐的最简单、最省心的方式。脚本会自动处理Node.js依赖的检测和安装,并直接启动配置向导。 curl-fsSL htt

By Ne0inhk
VMware+Ubuntu+ROS完整部署流程

VMware+Ubuntu+ROS完整部署流程

本文是自己整理的完整的部署ROS的流程,欢迎大家沟通与交流,才疏学浅,有不对的地方欢迎大家与我交流。 注:本文章只适合Windows电脑用户 1.下载需要用到的资料 首先下载虚拟机软件VMware,win10系统选择下载1,win11系统选择下载2,以下是我自己的百度网盘链接: 下载1: 链接:https://pan.baidu.com/s/1d9lAB3OH2LkbmXXNXTmI3A? 提取码:pwd=6cdm 下载2: 链接:https://pan.baidu.com/s/1cgU_tzzkaOaPML0VMbisrA?pwd=m7vs 提取码: m7vs 然后根据你想学习的内容,选择你要下载的Ubuntu镜像,链接对应的镜像版本以及镜像可安装的ROS版本如下: 链接1:(Ubuntu18.04+ros1+melodic) 链接:https://pan.baidu.com/s/

By Ne0inhk
Flutter 组件 image_size_getter_http_input 的鸿蒙化适配实战 - 驾驭极致图像采样大坝、实现 OpenHarmony 高性能列表滚动与流式渲染指纹预检方案

Flutter 组件 image_size_getter_http_input 的鸿蒙化适配实战 - 驾驭极致图像采样大坝、实现 OpenHarmony 高性能列表滚动与流式渲染指纹预检方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 image_size_getter_http_input 的鸿蒙化适配实战 - 驾驭极致图像采样大坝、实现 OpenHarmony 高性能列表滚动与流式渲染指纹预检方案 前言 在鸿蒙(OpenHarmony)生态的重型电商应用、短视频流媒体或者任何涉及海量瀑布流展示的 0308 批次项目中。“图像渲染的即时感与列表滚动丝滑度维度”是衡量整个前端交互体验的最终质量门禁。面对包含数千张高分辨率商品图、动态变化的社交媒体封面、甚至是跨设备同步产生的超大素材包。如果仅仅依靠传统的“全量下载后再获取尺寸”或者干瘪的占位图策略。不仅会导致在列表快速滚动时因为频繁的布局重绘(Relayout)产生严重的卡顿。更会因为内存溢出(OOM)的风险,让老旧机型在处理图像海啸时瞬间崩溃。 我们需要一种“只读头部、先知大小”的极速采样艺术。 image_size_getter_http_input 是一套专注于无缝整合

By Ne0inhk
在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程

在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程

在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程 什么是 OpenClaw?—— 你的本地 AI 智能体执行框架 OpenClaw 不仅仅是一个聊天机器人,而是一个功能强大的 AI 智能体执行框架。你可以把它想象成一个能自主思考、调用工具、并替你完成复杂任务的数字员工。 🧠 核心概念 * 智能体:OpenClaw 的核心大脑。它能理解你的自然语言指令,拆解任务,并决定调用哪些工具来执行。 * 网关:所有外部访问的入口。它负责处理 WebSocket 连接、管理设备配对、路由消息,是你与智能体交互的桥梁。 * 技能:智能体可调用的具体工具,比如访问文件、操作浏览器、发送消息、查询数据库等。你可以根据需要扩展技能库。 * 记忆:OpenClaw 可以存储对话历史和重要信息,实现长期记忆和上下文理解,让交互更连贯。 * 通道:连接外部聊天平台的渠道,如

By Ne0inhk