macOS下编译Scip套件papilo包时TBB库Undefined symbols报错求助
macOS编译papilo包TBB库链接错误解决方案
错误根因
该链接报错是版本不兼容导致:papilo依赖旧版TBB(2020及更早版本) 的interface5接口,而当前Homebrew默认安装的是oneAPI TBB(2021及之后版本),旧接口在新版中已被移除,因此链接时找不到对应符号。
可用解决方案
方案1:降级安装兼容版本TBB
- 先卸载当前系统中的新版TBB:
brew uninstall tbb
- 安装旧版TBB 2020:
brew install tbb@2020
- 清空原有构建缓存后,重新运行CMake配置,指定TBB路径:
- x86_64架构Mac:
cmake .. -DTBB_ROOT=/usr/local/opt/tbb@2020 -DCMAKE_PREFIX_PATH=/usr/local/opt/tbb@2020/lib/cmake
- ARM架构(M系列)Mac:
cmake .. -DTBB_ROOT=/opt/homebrew/opt/tbb@2020 -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/tbb@2020/lib/cmake
- 重新执行
make命令编译即可。
方案2:禁用papilo的TBB并行功能
如果不需要并行计算能力,可直接在CMake配置阶段关闭TBB支持,无需处理版本问题:
cmake .. -DPAPILO_USE_TBB=OFF
清空构建缓存重新编译即可。
方案3:手动指定TBB链接参数
如果已手动编译安装兼容版本的TBB,可直接指定头文件和库文件路径:
cmake .. -DTBB_INCLUDE_DIR=<你的TBB头文件路径> -DTBB_LIBRARY=<你的TBB库文件路径/libtbb.dylib>
注意:每次修改CMake配置前,必须清空build目录下的所有旧构建缓存,避免缓存干扰导致配置不生效。
内容的提问来源于stack exchange,提问作者Lisa Marie
相关产品推荐
相关产品推荐

