运行 scip 时遇到 libquadmath.0.dylib 的“dyld:未加载错误架构的库”

问题描述

我从预编译二进制文件SCIPOptSuite-7.0.2-Darwin-Ipopt-gcc10.sh 安装程序中安装了 SCIP Optimization Suite。 我还通过运行安装了 gcc 和 tbb:

brew install gcc
brew install tbb

错误信息:

$ SCIPOptSuite-7.0.2-Darwin/bin/scip
dyld: Library not loaded: /usr/local/lib/7/i386/libquadmath.0.dylib
  Referenced from: /Users/it/VirtualBox/10运筹学/14SCIP/01install/SCIPOptSuite-7.0.2-Darwin/bin/scip
  Reason: no suitable image found.  Did find:
    /usr/local/lib/7/i386/libquadmath.0.dylib: mach-o,but wrong architecture
    /usr/local/lib/7/i386/libquadmath.0.dylib: stat() Failed with errno=1
    /usr/local/lib/7/i386/libquadmath.0.dylib: mach-o,but wrong architecture
[1]    93720 abort      SCIPOptSuite-7.0.2-Darwin/bin/scip

还有其他安装了 x86_64 架构的 libquadmath.0.dylib:

$ sudo find / -name libquadmath.0.dylib
Password:
/usr/local/lib/7/i386/libquadmath.0.dylib
/usr/local/lib/7/libquadmath.0.dylib
/usr/local/opt/lib/gcc/7/i386/libquadmath.0.dylib
/usr/local/opt/lib/gcc/7/libquadmath.0.dylib
/usr/local/Cellar/4.6.4/lib/gcc/x86_64-apple-darwin12.5.0/4.6.4/i386/libquadmath.0.dylib
/usr/local/Cellar/4.6.4/lib/gcc/x86_64-apple-darwin12.5.0/4.6.4/libquadmath.0.dylib
/usr/local/Cellar/gcc/10.2.0_2/lib/gcc/10/libquadmath.0.dylib
/usr/local/Cellar/gcc@4.6/4.6.4/lib/gcc/x86_64-apple-darwin12.5.0/4.6.4/i386/libquadmath.0.dylib
/usr/local/Cellar/gcc@4.6/4.6.4/lib/gcc/x86_64-apple-darwin12.5.0/4.6.4/libquadmath.0.dylib
/Users/it/miniconda3/lib/python3.6/site-packages/numpy/.dylibs/libquadmath.0.dylib
/Users/it/miniconda3/lib/python3.6/site-packages/scipy/.dylibs/libquadmath.0.dylib
/Users/it/miniconda3/envs/py2/lib/python2.7/site-packages/scipy/.dylibs/libquadmath.0.dylib

$ lipo /usr/local/lib/7/libquadmath.0.dylib -archs
x86_64

我想知道为什么 scip 没有找到这些具有正确架构的 dylib? 非常感谢。

解决方法

首先确保您安装了正确版本的 gcc,您下载的安装程序要求版本 10。

其次,尝试先安装所有先决条件,然后再重新运行安装程序脚本。

如果这没有帮助,请检查 otool -L SCIPOptSuite-7.0.2-Darwin/bin/scipecho $DYLD_LIBRARY_PATH 的输出以查看相关库是否已加载。

最后,您可以尝试通过将库路径调整为正确的路径来修补二进制文件:

install_name_tool -change /usr/local/lib/7/i386/libquadmath.0.dylib /usr/local/Cellar/gcc/10.2.0_2/lib/gcc/10/libquadmath.0.dylib SCIPOptSuite-7.0.2-Darwin/bin/scip