【自记录】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等功能了。

相关推荐
heimeiyingwang2 分钟前
【架构实战】可观测性三支柱实战:Metrics、Logging、Tracing 如何统一落地
开发语言·架构·php
caimouse23 分钟前
ReactOS 图形系统分析(53):系统库存对象 — stockobj.c
c语言·开发语言·spring
南京云森杉木桩35 分钟前
水利木桩源头直供,质量可靠价格更优
大数据·python
Aaron - Wistron44 分钟前
Python基础教程2/4(复合数据结构)
python
小柯南敲键盘1 小时前
跨境电商图片翻译与视频字幕翻译工具推荐
python·音视频
ZJU_统一阿萨姆1 小时前
【推理优化进阶】通信关键路径:NCCL、RDMA 与计算通信重叠
开发语言·人工智能·语言模型·架构·系统架构
我不是疯子是傻子1 小时前
Qt 程序打包部署全攻略:从 windeployqt 到 Inno Setup 的静默安装与版本迭代实战
开发语言·qt
ZC跨境爬虫1 小时前
LeetCode 13. 罗马数字转整数(多解法详解 + Java Python 实现)
java·python·leetcode
machnerrn1 小时前
智慧交通系列(一)-十字路口车辆闯红灯检测告警抓拍系统(附含数据+源码+模型)
人工智能·python·深度学习
现代野蛮人1 小时前
【深度学习实验】—— 利用 RNN 模型进行心脏病预测
pytorch·python·tensorflow·ml