error: subprocess-exited-with-error × Building wheel for lgpio (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [14 lines of output] running bdist_wheel running build running build_py running build_ext building '_lgpio' extension swigging lgpio.i to lgpio_wrap.c swig -python -o lgpio_wrap.c lgpio.i creating build/temp.linux-aarch64-cpython-313 aarch64-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -fPIC -Isrc -I/home/kali/work/pwnhyve-main/.venv/include -I/usr/include/python3.13 -c lgpio_wrap.c -o build/temp.linux-aarch64-cpython-313/lgpio_wrap.o creating build/lib.linux-aarch64-cpython-313 aarch64-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 build/temp.linux-aarch64-cpython-313/lgpio_wrap.o -L/usr/lib/aarch64-linux-gnu -llgpio -o build/lib.linux-aarch64-cpython-313/_lgpio.cpython-313-aarch64-linux-gnu.so /usr/bin/ld: cannot find -llgpio: No such file or directory collect2: error: ld returned 1 exit status error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for lgpio Failed to build lgpio ERROR: Failed to build installable wheels for some pyproject.toml based projects (lgpio)
时间: 2025-07-19 20:30:40 浏览: 4
<think>我们有两个错误需要解决:
1. error: command 'swig' failed: No such file or directory
解决方案:安装SWIG工具。
2. /usr/bin/ld: cannot find -llgpio
解决方案:确保系统上安装了lgpio的库(通常是liblgpio-dev或类似的开发包)。
根据用户的操作系统(假设是Linux,因为错误中提到了/usr/bin/ld),我们可以给出以下步骤:
步骤1:安装SWIG
在Ubuntu/Debian上:sudo apt install swig
在CentOS/RHEL上:sudo yum install swig
步骤2:安装lgpio的开发库
在Ubuntu/Debian上:sudo apt install liblgpio-dev
注意:如果系统仓库中没有liblgpio-dev,可能需要从源码安装lgpio库。
如果系统仓库中没有liblgpio-dev,我们可以从源码安装lgpio库:
步骤2.1:下载lgpio源码
可以从官方仓库或使用以下命令:
git clone https://github.com/joan2937/lg.git
步骤2.2:编译安装
cd lg
make
sudo make install
步骤3:设置库路径(如果安装到非标准路径)
如果安装后仍然出现找不到库,可能需要将库路径添加到系统配置中:
sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/lg.conf
sudo ldconfig
步骤4:重新安装Python的lgpio包
pip install lgpio
但是,用户可能是在树莓派上操作,因为lgpio常用于树莓派GPIO控制。树莓派系统(Raspbian)可能没有提供liblgpio-dev包,所以需要从源码安装lgpio库(即上面的步骤2.1-2.2)。
另外,注意引用[1]中提到了共享库找不到的问题(libmujoco150.so),这和我们的第二个错误类似,都是动态链接库找不到。因此,我们同样需要确保liblgpio.so在动态链接器搜索的路径中。
总结解决方案:
1. 安装SWIG:解决第一个错误。
2. 安装lgpio库(从源码):解决第二个错误(因为系统可能没有现成的包)。
3. 确保动态链接器能找到安装的库(通常安装到/usr/local/lib会自动搜索,否则需要ldconfig)。
下面给出具体步骤:
步骤1:安装SWIG
以Ubuntu/Debian为例:
sudo apt update
sudo apt install swig
步骤2:安装lgpio库
git clone https://github.com/joan2937/lg.git
cd lg
make
sudo make install
步骤3:更新动态链接库缓存
sudo ldconfig
步骤4:安装Python包
pip install lgpio
如果用户不是树莓派,或者系统有提供liblgpio-dev,那么步骤2可以简化为:
sudo apt install liblgpio-dev
但是根据lg的GitHub页面(https://github.com/joan2937/lg),它主要针对树莓派,所以从源码安装是通用方法。
注意:从源码安装需要确保有编译工具(如gcc, make),如果没有,需要先安装:
sudo apt install build-essential
另外,用户可能是在虚拟环境中,但上述步骤不影响。
如果用户遇到其他问题,比如权限问题,可以使用虚拟环境或者加上`--user`选项。
下面按照要求组织回答:</think>### 解决 lgpio 编译错误的完整方案
#### 错误分析
1. **swig 缺失错误**:`error: command 'swig' failed`
- 原因:缺少 SWIG(Simplified Wrapper and Interface Generator)工具,该工具用于将 C/C++ 代码转换为 Python 扩展模块。
2. **库链接错误**:`/usr/bin/ld: cannot find -llgpio`
- 原因:系统缺少 lgpio 的共享库文件(`liblgpio.so`),或库路径未正确配置。
---
### 解决方案
#### 步骤 1:安装 SWIG 工具
根据操作系统选择安装命令:
```bash
# Ubuntu/Debian
sudo apt update && sudo apt install swig
# CentOS/RHEL
sudo yum install swig
# Arch/Manjaro
sudo pacman -S swig
# macOS (Homebrew)
brew install swig
```
验证安装:`swig -version` 应输出版本信息(如 `SWIG Version 4.1.1`)
#### 步骤 2:安装 lgpio 共享库
**方法一:从源码编译安装**
```bash
git clone https://github.com/joan2937/lg.git
cd lg
make
sudo make install
sudo ldconfig # 更新动态链接库缓存
```
**方法二:通过包管理器安装**(仅限支持的系统)
```bash
# Ubuntu/Debian
sudo apt install liblgpio-dev
# Raspberry Pi OS
sudo apt install librgpio-dev
```
#### 步骤 3:配置库路径
若仍报错 `cannot find -llgpio`,手动添加库路径:
```bash
# 查找 liblgpio.so 位置(通常在 /usr/local/lib 或 /usr/lib)
find / -name liblgpio.so 2>/dev/null
# 添加路径到动态链接配置
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/lg.conf
sudo ldconfig
```
#### 步骤 4:安装编译依赖
```bash
# Ubuntu/Debian
sudo apt install build-essential python3-dev libc6-dev
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
```
#### 步骤 5:重新安装 lgpio
```bash
# 清除缓存并重试
pip cache purge
pip install --no-cache-dir lgpio
# 若仍失败,尝试强制使用源码编译
pip install --force-reinstall --no-binary lgpio lgpio
```
---
### 替代方案:使用预编译包
如果编译仍失败,可尝试免编译安装:
```bash
pip install lgpio --only-binary :all: --prefer-binary
```
> **原理说明**:
> - SWIG 是生成 Python/C++ 接口的关键工具[^1],缺失会导致 `_lgpio` 扩展编译失败
> - `ld: cannot find -llgpio` 表明链接器找不到共享库,需确保 `liblgpio.so` 在标准库路径中[^1]
> - `sudo ldconfig` 命令刷新动态链接器缓存,使新安装的库生效
---
### 相关问题
1. 如何验证共享库是否被正确加载?
2. 除了 SWIG,还有哪些 Python/C++ 接口生成工具?
3. 如何永久添加自定义库路径到 Linux 系统?
4. 编译 Python 扩展时如何查看详细的错误日志?
5. 树莓派上安装 lgpio 有哪些特殊注意事项?
> 引用参考:
> [^1]: 共享库加载错误的解决方案与动态链接器配置
> [^2]: Python 包命名规则与平台兼容性问题
> [^3]: CUDA 库缺失问题的相似处理思路
阅读全文
相关推荐


















