Linux aarch64架构下Miniconda环境多包触发Illegal instruction问题求助
解决aarch64架构下conda环境
Illegal instruction (core dumped)错误 核心原因
conda-forge提供的预编译TensorFlow、NumPy等包,可能包含当前aarch64设备不支持的CPU指令集(如高级NEON扩展);同时你使用的Miniconda 4.9.2版本较老,在aarch64架构上的包兼容性存在缺陷。
解决步骤
1. 升级Miniconda至最新版本
先修复老版本conda的兼容性问题:
# 激活base环境 source /home/su/miniconda3/bin/activate base # 升级conda核心组件 conda update -n base -c defaults conda -y
2. 重建环境并重新安装兼容包
删除原有环境,重新创建后安装指令集匹配的预编译包:
# 删除旧环境 conda remove -n myenv --all -y # 创建新的Python3.8环境 conda create -n myenv python=3.8 -y # 激活环境 conda activate myenv # 强制重新安装指定版本的包,优先选择aarch64兼容构建 conda install -c conda-forge tensorflow=2.8.2 numpy=1.21.5 keras=2.8.0 --force-reinstall -y
如果仍报错,尝试降级NumPy到1.20.x版本(该版本对旧aarch64设备兼容性更好):
conda install -c conda-forge numpy=1.20.3 -y
3. 针对当前设备源码编译(终极方案)
若预编译包均不兼容,直接针对设备指令集从源码编译:
- 先安装编译依赖:
conda install -c conda-forge gcc gfortran make cmake -y
- 编译NumPy:
pip uninstall numpy -y git clone https://github.com/numpy/numpy.git cd numpy git checkout v1.21.5 python setup.py build --fcompiler=gnu95 install
- 编译TensorFlow:
pip uninstall tensorflow keras -y git clone https://github.com/tensorflow/tensorflow.git cd tensorflow git checkout v2.8.2 # 配置编译选项,根据提示禁用当前设备不支持的指令集 ./configure # 开始编译(耗时较长,需根据设备性能调整并行数) bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package # 生成并安装pip包 ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg pip install /tmp/tensorflow_pkg/tensorflow-*.whl
4. 验证设备指令集支持
通过以下命令查看当前设备支持的CPU指令集,确认包依赖的指令集是否匹配:
cat /proc/cpuinfo | grep Features
如果输出中缺少neon等关键指令集,说明预编译包不兼容,必须通过源码编译并禁用对应指令。
内容的提问来源于stack exchange,提问作者Susan
相关产品推荐
相关产品推荐

