AIX5.3安装Python3遇到的坑

简介: AIX5.3安装Python3遇到的坑

最近在折腾AIX5.3,这是一款非常古老的power架构的服务器,目前IBM官方已经不维护,但是仍然在很多银行里跑着比较核心的业务,由于我们的客户大部分是面向银行,少不了要做AIX5.3上的应用软件适配。本文记录在AIX5.3上编译安装Python3时遇到的一些坑。

由于AIX5.3非常古老,基本上很难找得到可以用的Python3安装包,只能通过源码编译的方式进行编译。

在此之前,需要安装好gcc编译器。安装过程不表(坑也比较多,但都是rpm安装,这里就不详细展开了),我安装的gcc版本是4.8.4。

坑1:缺失libm

遇到的第一个问题,就是缺少libm。

libm是链接math.h的库,玩过C/C++的同学一定非常熟悉,这个库理论上是系统自带的,可世事就是这么无常,偏偏是缺了这个基础库。

按照网上说法,这个库是在bos.adt.libm这个Fileset里面,但是并找不到这个东西,IBM官方倒是提供了下载链接:https://www.ibm.com/support/pages/fileset-information-bosadtlibm, 但是根本下载不了,原因是AIX5.3官方已经停止维护了,所以这个下载链接实际上是放了个寂寞。

好在我手上是有一个AIX5.3的iso镜像的,于是想,既然是基础包,难道不能从这个iso里解压出来吗?

说干就干,可是解压出来的iso文件中,根本找不到任何关于libm的东西,没有libm.a, 也没有bos.adt.libm。

走到这一步,似乎山穷水尽了。但我仍不肯死心,在网上屎里淘沙,历尽千辛万苦,中间的过程不表了,功夫不负有心人,感谢万能的谷歌,终于找到了蛛丝马迹,说bos.adt.libm在CD1的bos.dat中, 查了一下,这个文件居然是有的!

于是使用installp -d bos.adt -l命令看了一下,竟然真的有libm:

终于看到了胜利的曙光了。

接下来就是安装这个bos.adt了,闲话不多说,安装命令搞起:

bash-4.2# ls
bos.adt       bos.adt.data
bash-4.2# installp -d bos.adt -acgXY all

安装过程还算顺利:

检查了一下,确实安装上了:

写个demo验证一下:

#include<stdio.h>
#include<math.h>
int main(void){
        printf("2^2 = %f\n", pow(2,2));
        return 0;
}

编译运行:

bash-4.2# gcc 1.c -lm   
bash-4.2# ./a.out 
2^2 = 4.000000

完美解决。

坑2:SEVERE ERROR: Symbol C_BSTAT

继续编译Python之旅。

满以为解决了libm的问题,后面就一马平川了,可接下来马上又报了个错:

具体报错就是:

"ld: 0711-593 SEVERE ERROR: Symbol C_BSTAT (entry 599) in object libpython3.6m.a[getbuildinfo.o]:
        The symbol refers to a csect with symbol number 0, which was not
        found. The new symbol cannot be associated with a csect and
        is being ignored."

对于这个报错,网上的说法是,这是gcc的BUG,可以通过加编译参数解决:

but this bug is a real show stopper, as it stops one building many
bits of Sage. The GNU 'patch' program is one that's affected. That can
be fixed by setting CFLAGS to -g0, but it would be a huge task to
change all of the software to disable debug information, apart from
the fact it would make debugging harder!!

完整链接如下: https://comp.unix.aix.narkive.com/yfW4nvvT/ld-0711-593-severe-error-symbol-c-bstat-anyone-got-a-better-solution

按这个说法,只需要加上CFLAGS=g0即可解决这个问题,于是修改编译参数:

./configure CC=/usr/bin/gcc --enable-optimizations CFLAGS=-g0

现在终于不报这个错了。

坑3:TOC overflow

可是接下来马上又报了一个错:

这个错误仍然是gcc报出来的,说TOC overflow

我们从gcc的官方链接中可以找到关于TOC的相关说明:https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html

所谓的TOC,就是Table Of Contents,他会为每个可执行文件生成一个.toc目录,由于Python本身源码比较大,因此生成的toc也就比较大,这就造成了溢出,官方文档还有一段说明:

也就是说,可以通过增加-mminimal-toc编译选项来解决。

于是,编译Python的编译选项就变成了如下这个样子:

./configure CC=/usr/bin/gcc CFLAGS="-mminimal-toc -g0"
make
make install

至此,安装完成。

设置一下环境变量:

export PATH=$PATH:/usr/local/bin

可以看到,已经能正常运行python3了。


推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容,点击立即学习: C/C++Linux服务器开发/高级架构师

目录
相关文章
|
28天前
|
IDE 开发工具 索引
在Python中安装第三方库
在Python中安装第三方库
403 30
|
2月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
325 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
2月前
|
XML 数据格式 Python
Python实用记录(五):labelImg安装和使用-----看这篇就够了!
这篇文章介绍了在Windows 10系统中使用Anaconda3安装labelImg工具的方法,包括通过pip安装相关包和从GitHub下载配置,以及一些使用技巧,如修改预定义类别和自动保存功能。
287 3
|
2天前
|
Linux Python
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
|
25天前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
30 1
|
28天前
|
Ubuntu Linux iOS开发
安装Python
安装 Python 是相对简单的过程,但需要根据不同的操作系统选择合适的方法。同时,合理使用虚拟环境可以更好地管理项目的依赖和环境,提高开发效率。希望这些步骤和注意事项能帮助你顺利安装 Python。
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
422 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
78 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
2月前
|
IDE 开发工具 iOS开发
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
本篇将详细介绍如何在Mac系统上安装Python,并配置Python开发环境。内容涵盖Python的安装、pip包管理工具的配置与国内镜像源替换、安装与配置PyCharm开发工具,以及通过PyCharm编写并运行第一个Python程序。通过本篇的学习,用户将完成Python开发环境的搭建,为后续的Python编程工作打下基础。
216 2
【10月更文挑战第3天】「Mac上学Python 3」入门篇3 - 安装Python与开发环境配置
|
2月前
|
iOS开发 MacOS Python
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧
本篇将详细介绍如何在Mac系统上安装Typora这款简洁高效的Markdown编辑器,并学习Markdown常用语法。通过本篇,用户能够准备好记录学习笔记的工具,并掌握基本的文档编辑与排版技巧,为后续学习提供便利。
163 1
【10月更文挑战第1天】「Mac上学Python 1」入门篇1 - 安装Typora与Markdown编辑技巧
下一篇
DataWorks