【自记录】Ubuntu20.04下Python自编译

因为需要新的Python版本,但是我们不希望修改系统原生的Python版本避免某些系统应用无法启动,因此自建一个干净的路径引入Python。

1.编译

以下在aarch64下测试,x64下可能有差异

  • 必须把相关的devel包安装完毕,否则python可能缺功能。
shell 复制代码
apt install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev  libgdbm-compat-dev libdb-dev

如果是CentOS 8 系列,可以参考

shell 复制代码
yum install -y openssl-devel bzip2-devel libffi-devel readline-devel sqlite-devel xz-devel gdbm-devel libuuid-devel tk-devel zlib-devel ncurses-devel expat-devel libnsl2-devel
  • 编译本体

开启-g,保留符号信息,方便后续调试。同时使用O2,尽量避免速度损失。如果需要精确定位Python源码,可能需要开到O0。

以Python3.10为例:

shell 复制代码
./configure CFLAGS="-g -O2" --prefix=/app/python --enable-optimizations
make -j$(nproc)
make install

可选:可以将自编译的Python加入默认路径

shell 复制代码
echo 'export PATH=/app/python/bin:$PATH' > /etc/profile.d/custom_python.sh

2.gdb调试

  • 将源码目录下的Tools\gdb目录下的libpython.py拷贝到任意目录,比方说拷贝到/app/python/gdb目录,然后在gdb的初始化脚本中追加该路径。
shell 复制代码
vi ~/.gdbinit
复制代码
python
import sys
sys.path.insert(0, "/app/python/gdb")
import libpython
end

然后就可以正常使用py-bt等功能了。

相关推荐
linweidong2 分钟前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
OpenAnolis小助手8 分钟前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom
小玮看世界10 分钟前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎13 分钟前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库
ForteScarlet28 分钟前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
萧瑟余晖31 分钟前
Java深入解析篇六十二之安全机制详解
java·开发语言
小刘在重生~1 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
2601_962099461 小时前
Python xlwt设置excel单元格字体及格式
python·excel·xlwt·样式设置·单元格格式
菜鸟~noob2331 小时前
【电子战】 第01篇:噪声、门限与虚警/检测概率(PFA/PD)【含matlab代码】
开发语言·matlab
奇牙coding1231 小时前
GPT-6-Astra API 接入教程:OpenRouter 路由配置 + Python/curl 示例 + 静默降级踩坑
开发语言·python·gpt·ai