You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

链接MetavisionSDK库后触发浮点异常(core dumped)的问题排查

问题:链接MetavisionSDK::core后matplotlib-cpp触发libopenblas浮点异常

问题背景

原本基于matplotlib-cpp的基础绘图代码及CMake配置可正常编译运行,但在CMake中添加MetavisionSDK::core库链接后,程序运行时抛出**"Floating point exception (core dumped)"**错误,GDB定位异常来自numpy依赖的libopenblas64_p-r0-2f7c42d4.3.18.so库的gemm_thread_n函数。

初始可运行代码

#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
int main() 
{
    plt::plot({1,2,3,4});
    plt::show();
}

初始CMakeLists.txt

project(basic)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11) 

find_package(PythonLibs 3.10 REQUIRED)

include_directories(
    /usr/local/matplotlib-cpp
    ${PYTHON_INCLUDE_DIRS}
)
add_executable(basic basic.cpp)
target_link_libraries(basic ${PYTHON_LIBRARIES})

修改后触发错误的CMakeLists.txt

project(basic)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_STANDARD 11) 

find_package(MetavisionSDK COMPONENTS core REQUIRED)
find_package(PythonLibs 3.10 REQUIRED)

include_directories(
    include
    ${PYTHON_INCLUDE_DIRS}
)
add_executable(basic basic.cpp)
target_link_libraries(basic ${PYTHON_LIBRARIES} MetavisionSDK::core)

GDB报错信息

Thread 1 "basic" received signal SIGFPE, Arithmetic exception.
0x00007fffd708bb9d in gemm_thread_n () from /home/user/.local/lib/python3.10/site-packages/numpy/core/../../numpy.libs/libopenblas64_p-r0-2f7c42d4.3.18.so

解决方法

1. 调整链接顺序

GCC的链接顺序会影响符号解析,将Python相关库移至MetavisionSDK之后,避免符号冲突:

target_link_libraries(basic MetavisionSDK::core ${PYTHON_LIBRARIES})

2. 禁用OpenBLAS多线程

MetavisionSDK可能已初始化线程库,与OpenBLAS的多线程机制冲突,可通过环境变量禁用:
运行程序时执行:

export OPENBLAS_NUM_THREADS=1
./basic

或在代码初始化阶段设置:

#include <cstdlib>
int main() {
    std::putenv((char*)"OPENBLAS_NUM_THREADS=1");
    plt::plot({1,2,3,4});
    plt::show();
}

3. 检查ABI兼容性

  • 确认MetavisionSDK使用的C标准与项目一致(当前为C11),若SDK采用更高标准,同步调整项目的CMAKE_CXX_STANDARD参数。
  • 核对Python的32/64位版本与MetavisionSDK是否匹配,避免跨位库链接。

4. 更换BLAS实现

若动态库冲突无法解决,可尝试:

  • 重新编译numpy,使用静态链接的OpenBLAS。
  • 切换numpy依赖的BLAS实现为MKL:
pip install numpy --force-reinstall --no-cache-dir --global-option="--mkl"

内容的提问来源于stack exchange,提问作者Mr Squid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:33:25