AIX5.3安装Python3遇到的坑

news2025/2/24 18:14:29

最近在折腾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服务器开发/高级架构师

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机——DS18B20 温度传感器实验,小白讲解,相互学习

DS18B20 介绍 DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接 口的温度传感器。与传统的热敏电阻等测温元件相比&#xff0c;它是一种新型的体积小、 适用电压宽、与微处理器接口简单的数字化温度传感器。 DS18B20 温度传感器具有如…

linuxOPS基础_linux常用自有服务(ntp,firewalld,crond)

linux常用自有服务 服务名含义ntpd用于同步计算机的系统时间的服务firewalld防火墙服务crond计划任务服务 ntp时间同步服务 NTP是网络时间协议(Network Time Protocol)&#xff0c;它是用来同步网络中各个计算机的时间的协议。 工作场景&#xff1a; ​ 公司开发了一个电商…

Jmeter教程 —— 简单的压力测试

Jmeter是一个非常好用的压力测试工具&#xff0c;可以用来做轻量级的压力测试&#xff0c;非常合适&#xff0c;只需要十几分钟&#xff0c;就能把压力测试需要的脚本写好。 什么是压力测试 顾名思义&#xff1a;压力测试&#xff0c;就是 被测试的系统&#xff0c;在一定的…

Android Studio查看第三方库依赖树

在Android开发过程中&#xff0c;我们或多或少都会引入第三方库&#xff0c;引入的库越多&#xff0c;越容易产生库之间的依赖冲突&#xff0c;所以我们今天一起来了解Android Studio查看第三方库依赖树。 下面就拿我遇到的问题还原一下&#xff1a; 之前接人容联客服系统的时候…

工作小技巧,封装if和Exception

在我们的工作中&#xff0c;经常会有这样的逻辑&#xff0c;就是判断一个参数是否合法&#xff0c;不合法就抛出异常&#xff0c;再由全局异常捕获后返回。 本文使用我编写的springboot日记本系统作为蓝本&#xff0c;&#xff0c;在已有项目的基础上改&#xff0c;源码下载地…

思科小型网络配置实例

一、配置思路 1.交换机上配置端口连接描述&#xff0c;在实际工作中很有用 2.外网配置&#xff0c;模拟外网&#xff1a;PC的IP地址200.200.200.2&#xff0c;Server的IP地址是200.200.200.3&#xff0c;网关都是200.200.200.1。SW-ISP的连接PC和Server-ISP的口属于vlan 3,&…

【vue】二:核心处理---vue的生命周期

文章目录 1.Vue生命周期的四个阶段&#xff0c;八个钩子2.vue的生命周期图例3. 初始阶段&#xff1a;虚拟DOM生成4. 挂载阶段&#xff1a;真实DOM生成5. 更新阶段&#xff1a;data变化重新渲染6. 销毁阶段&#xff1a;卸载所有&#xff0c;销毁vm 1.Vue生命周期的四个阶段&…

Appium利用xpath查找同级节点兄弟节点方法

当页面存在两个文件夹&#xff0c;结构相同&#xff0c;只有文件夹名称不同时&#xff0c;想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。 1.由父节点定位子节点 driver.findElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[name"标签…

Java网络开发(Tomcat)—— 用Jsp语法 到 实现数据的分页展示 到 只看自己的数据 + 模糊查询 迭代升级

目录 引出0.jsp的使用和语法 & 报错和解决&#xff08;1&#xff09;后端共享&#xff0c;前端获取 ${pageInfo}&#xff08;2&#xff09;如果想获取pageInfo这个对象的某个属性值&#xff0c;用 点 属性 ${pageInfo.pages}&#xff08;3&#xff09;如果想回传&#xff…

前端性能测试必备测试工具

我们在使用网站过程中&#xff0c;经常会遇到慢的问题&#xff0c;为了找到原因&#xff0c;一般需要借助工具进行检测&#xff0c;通过工具&#xff0c;可以检测出前端站点加载资源的相关详细情况。 今天&#xff0c;就给大家介绍几款前端性能测试分析工具&#xff0c;结合性能…

为什么性能测试PR单机版要升级到P-One一站式性能测试平台

目前市面上常用的性能测试工具均为单机版&#xff0c;导致了一些问题&#xff1a; 1.脚本无法进行共享&#xff1b; 2.执行管理无法进行统一化、协同化管理&#xff1b; 3.项目经理只能通过日报或者线下沟通获取当前项目进度&#xff1b; 4.对测试结果只能通过文件传输的方式进…

Linux安装Nginx详细教程

文章目录 下载安装包开始安装相关命令 下载安装包 官网下载&#xff1a;http://nginx.org/en/download.html 自己找一个安装目录 我这里进入到usr/local下创建一个安装软件目录 cd /usr/local mkdir softwore cd softwore使用ftp工具或者windows命令行将下载好的nginx安装包…

家居行业内卷?创新乏力?十大关键词解读IF ROOM如何定义未来主义家居

中商产业研究院今年早前发布的《中国家居市场前景及投资机会研究报告》显示&#xff0c;2021年中国定制家居行业的市场规模已经突破4000亿元&#xff0c;2016-2021年复合增长率达16%&#xff0c;行业保持良好的发展态势&#xff0c;预计2023年中国定制家居市场规模能突破5000亿…

2023年了, 你还不会使用node.js做压力测试?

背景 前些天刷抖音&#xff0c;看到网传的Java继父&#xff0c;求人攻击压测他的网站&#xff0c;这不得摩拳擦掌。 所以今天来聊聊如何对自己的项目、接口进行压力测试。 压力测试的目的 首先, 绝对不是为了压测、攻击别人的网站为乐。 1、探索线上系统流量承载的极限&…

jvm中类和对象定义存储基础知识 | 京东云技术团队

1 类文件数据结构类型 Class文件结构主要有两种数据结构&#xff1a;无符号数和表 •无符号数&#xff1a;用来表述数字&#xff0c;索引引用、数量值以及字符串等&#xff0c;比如 图1中类型为u1,u2,u4,u8分别代表1个字节&#xff0c;2个字节&#xff0c;4个字节&#xff0c…

2023“水博会”召开,千寻位置携智慧水利创新方案登台亮相

6月7日&#xff0c;“2023中国水博览会暨第十八届中国&#xff08;国际&#xff09;水务高峰论坛”&#xff08;简称“水博会”&#xff09;在江苏南京开幕。千寻位置基于北斗时空能力&#xff0c;打造多款水利数字孪生解决方案&#xff0c;在本次水博会上亮相。 水利数字孪生工…

SNAP重采样哨兵2号 L2A级数据报错 Invalid S2 source product解决办法

原来安装的SNAP7.0&#xff1a;esa-snap_all_windows-x64_7_0.exe 重采样时报错&#xff1a; A problem occurred during the target product initialisation. Type: OperatorException Message: Invalid S2 source product 解决办法&#xff1a;下载SNAP新版本9.0 http:/…

再看const成员函数

文章目录 再看函数重载const成员函数保安&#xff08;const&#xff09;能保护所有人&#xff08;类成员&#xff09;吗&#xff1f;mutable修饰类成员 const/非const成员函数的复用 关于函数重载实际上我理解不是很深入&#xff0c;直接导致const成员函数这块出大问题&#xf…

SpringBoot+Vue 的网上图书商城管理系统

文章目录 1. 简介2 技术栈3.1系统功能 4系统设计4.1数据库设计 5系统详细设计5.1系统功能模块5.1系统功能模块5.2管理员功能模块 源码下载 1. 简介 本次设计任务是要设计一个网上图书商城&#xff0c;通过这个系统能够满足网上图书商城的管理功能。系统的主要功能包括首页、个…

第二十一章_Redis的缓存过期淘汰策略

Redis内存满了怎么办 redis 一共有 4 个命令来设置键的生存时间&#xff08;可以存活多久&#xff09;或过期时间&#xff08;什么时候被删除&#xff09; expire <key> <ttl>&#xff1a;将 key 的生存时间设置为 ttl 秒pexpire <key> <ttl>&#xf…