You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Termux上从GitHub构建最新Python?编译报错求助

在Termux中编译Python 3.12+ 解决sem_clockwait未声明错误

错误原因

这个错误的根源是Termux依赖的bionic libc(Android/Termux专用C标准库)在旧版本中默认不暴露sem_clockwait函数,或是编译Python时未启用对应宏定义,导致编译器无法识别该函数。

解决方案步骤

  1. 更新系统与编译依赖
    先确保Termux系统及工具都处于最新状态,避免旧库引发兼容问题:
pkg update && pkg upgrade -y
pkg install clang make openssl-dev bzip2-dev libffi-dev zlib-dev ncurses-dev readline-dev sqlite-dev gdbm-dev libuuid-dev -y
  1. 调整Python编译配置
    下载Python 3.12+源码包(以3.12.4为例),解压后进入源码目录,运行配置命令时添加宏定义:
# 下载并解压Python 3.12.4
wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
tar -xf Python-3.12.4.tgz
cd Python-3.12.4

# 配置编译选项,启用GNU扩展函数
./configure --prefix=$HOME/.local --enable-optimizations CFLAGS="-D_GNU_SOURCE"

--prefix=$HOME/.local将Python安装到用户目录,不干扰系统自带版本;--enable-optimizations开启编译优化提升运行速度。

  1. 源码手动修复(若配置后仍报错)
    打开Python/parking_lot.c文件,在开头添加以下内容:
#define _GNU_SOURCE
#include <semaphore.h>

保存后重新执行make命令。

  1. 编译并安装
# 多线程编译,自动匹配CPU核心数
make -j$(nproc)
# 安装到指定用户目录
make install
  1. 配置环境变量
    将安装后的Python二进制目录加入PATH,确保全局可调用:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
# 使配置生效
source ~/.bashrc

验证版本:执行python3 --version,应显示3.12+版本号。


Termux构建Python 3.12+ 通用指南
  • 前置准备:必须先更新系统并安装所有编译依赖(步骤1中的pkg命令)
  • 源码获取:从Python官网下载对应版本的tar.gz包,用wget下载后解压
  • 编译配置:务必添加CFLAGS="-D_GNU_SOURCE",否则易出现函数未声明错误
  • 编译安装:使用多线程编译加速,安装到用户目录避免权限问题
  • 环境配置:将安装目录的bin文件夹加入PATH,确保全局可用

内容的提问来源于stack exchange,提问作者MemoKing34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:04:59