M1芯片MacBook安装CPLEX 22.1.1架构不兼容问题求助
CPLEX 22.1.1在M1 Mac上的架构兼容问题
问题情况
在M1芯片(arm64架构)、macOS Ventura 13.1的MacBook上安装CPLEX 22.1.1时,安装程序只会部署x86_64架构的文件,路径为/Applications/CPLEX_Studio2211/cplex/bin/x86-64_osx,导致调用不同API时出现架构不兼容错误:
- Python API报错:
(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')) - C++ API编译链接报错:
building for macOS-arm64 but attempting to link with file built for macOS-x86_64
已做排查
- 终端执行
uname -m返回arm64,确认系统本身是arm64架构 - CPLEX安装程序是Java应用,测试发现其运行时
System.getProperty("os.arch")返回x86_64——即使删除了本地所有Java环境,用安装程序自带的JRE重新安装,这个架构识别错误依然存在 - 目前只有OPL组件能正常求解模型,推测IBM对arm64架构的支持测试不够充分
临时处理办法
- 通过Rosetta 2兼容运行
- Python:右键终端-显示简介,勾选“使用Rosetta打开”,在这个兼容终端里调用CPLEX Python API,以x86_64模式运行就能避开架构不匹配问题
- C++:修改编译配置,把目标架构改成x86_64——比如Xcode里设置
Architectures为x86_64,或者在Makefile里加-arch x86_64编译参数,编译后的程序通过Rosetta 2运行即可
- 手动指定arm64库路径(如果存在)
先检查CPLEX安装目录下有没有arm64_osx文件夹,如果有:- Python:设置环境变量
export CPLEX_BIN=/Applications/CPLEX_Studio2211/cplex/bin/arm64_osx,或者在代码里直接指定加载该路径的库 - C++:链接阶段替换成arm64架构的库文件路径,不要用x86_64的路径
- Python:设置环境变量
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

