Apple Silicon M4 Mac安装keystone-engine==0.9.2动态库缺失求助
问题原因分析
- 编译目标错误:从报错日志里的
using latest makefile for target android可以看出,keystone-engine 0.9.2的pip包构建脚本在Apple Silicon环境下默认触发了Android目标的编译流程,生成的动态库并非适配macOS arm64的版本,自然无法加载。 - 架构不匹配:虚拟环境可能未正确配置为arm64架构,导致pip编译时默认使用Rosetta 2的x86_64兼容模式,生成的库与M4芯片的arm64架构不兼容。
- 默认构建脚本未适配Apple Silicon:keystone-engine 0.9.2的官方pip包构建逻辑未针对Apple Silicon做适配,无法自动生成正确的arm64动态库。
强制为Apple Silicon编译keystone-engine的步骤
1. 准备编译环境
- 确保已安装Xcode命令行工具:
xcode-select --install - 确认虚拟环境为arm64架构:
若输出不是python -c "import platform; print(platform.machine())"arm64,需重新创建arm64架构的虚拟环境(例如用conda时指定CONDA_SUBDIR=osx-arm64,或使用pyenv安装arm64版本的Python)。
2. 手动克隆并编译keystone-engine源码
- 克隆0.9.2版本的源码:
git clone -b 0.9.2 https://github.com/keystone-engine/keystone.git cd keystone - 创建编译目录并配置cmake(强制指定arm64架构):
mkdir build && cd build cmake .. -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_BUILD_TYPE=Release - 编译并安装动态库:
(make -j$(sysctl -n hw.logicalcpu) sudo make installsudo make install会将库安装到/usr/local/lib,若不想全局安装,可添加-DCMAKE_INSTALL_PREFIX=/path/to/your/venv指定虚拟环境路径)
3. 安装Python绑定
- 回到keystone源码根目录,进入Python绑定目录,用虚拟环境的pip安装:
cd ../bindings/python /path/to/your/venv/bin/pip install .
4. 验证动态库加载
- 设置动态库路径(若库未安装到系统默认路径):
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH - 运行Python测试导入:
python -c "import keystone; print('keystone loaded successfully')"
内容的提问来源于stack exchange,提问作者Keren Schneider
相关产品推荐
相关产品推荐

