在Amazon Linux 2安装Python版Aerospike 3.10.0遇-march=nocona错误
解决Aerospike Python客户端3.10.0安装架构兼容问题
问题场景
当前使用的Aerospike版本低于4.9,必须安装Python客户端版本<5.0.0。执行pip install aerospike==3.10.0时触发编译错误:
Assembler messages:
Error: unknown architecture `nocona'
Error: unrecognized option -march=nocona
cc1: error: unknown value ‘nocona’ for -march
error: command '/usr/bin/gcc' failed with exit code 1
修改客户端源码的setup.py后,又碰到架构不兼容问题:
输入文件`./aerospike-client-c/lib/libaerospike.a(ltm.o)'的i386:x86-64架构与aarch64输出不兼容
解决方法
1. 修复编译参数错误
旧版客户端的setup.py硬编码了x86专属的编译参数-march=nocona,在arm(aarch64)环境下gcc不识别该参数。修改方式:
- 打开客户端源码的setup.py,找到设置
extra_compile_args的代码段 - 删除
-march=nocona,替换为适配当前aarch64架构的参数,比如-march=armv8-a
2. 解决预编译库架构不匹配
3.10.0版本的Python客户端默认携带的是x86-64架构的C核心库,无法在aarch64环境使用,需手动编译适配的C库:
- 下载与3.10.0 Python客户端配套的Aerospike C客户端源码
- 在当前aarch64机器上编译C客户端,生成
libaerospike.a - 将编译好的
libaerospike.a替换Python客户端源码中aerospike-client-c/lib/目录下的原文件 - 在源码目录执行
pip install .完成安装
3. 替代方案
如果不想手动编译,可尝试查找第三方提供的aarch64预编译包,或更换其他满足<5.0.0要求的客户端版本(比如3.9.x),这类版本可能已有现成的适配包。
内容的提问来源于stack exchange,提问作者user3652341
相关产品推荐
相关产品推荐

