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

WSL Ubuntu环境下OpenCV编译make命令报错求助

问题描述

在Windows 10的WSL环境运行Ubuntu 20.04.6 LTS,安装OpenCV时执行build目录下的make命令报错,核心问题是GCC的intrinsic头文件(如xsaveintrin.h、avxintrin.h等)被无关内容污染,出现大量语法错误,导致编译终止。

错误输出片段

[ 21%] Built target opencv_highgui_plugins
[ 21%] Built target opencv_dnn_plugins
[ 21%] Built target opencv_videoio_plugins
[ 21%] Built target ittnotify
[ 21%] Built target ippiw
[ 21%] Built target libopenjp2
[ 21%] Built target ade
[ 21%] Built target libwebp
[ 21%] Built target libprotobuf
[ 21%] Built target IlmImf
[ 21%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/parallel_impl.cpp.o
In file included from /usr/lib/gcc/x86_64-linux-gnu/9/include/immintrin.h:43,
                 from /usr/lib/gcc/x86_64-linux-gnu/9/include/x86intrin.h:32,
                 from /home/andrea/Code/AI/esercitazione4-23-24/opencv/modules/core/src/parallel_impl.cpp:43:
/usr/lib/gcc/x86_64-linux-gnu/9/include/xsaveintrin.h:3:10: error: stray ‘\’ in program
    3 |        */\m* */\M*
      |          ^
/usr/lib/gcc/x86_64-linux-gnu/9/include/xsaveintrin.h:3:16: error: stray ‘\’ in program
    3 |        */\m* */\M*
      |                ^
...
/usr/lib/gcc/x86_64-linux-gnu/9/include/avxintrin.h:11:24: error: missing terminating ' character
   11 | Long-time Vim users won't use menus much.  But the power is in adding your own
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...
make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/build.make:999: modules/core/CMakeFiles/opencv_core.dir/src/parallel_impl.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1703: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

已尝试的操作

  • 执行sudo apt update、sudo apt upgrade更新系统包
  • 更新WSL并重启环境
  • 执行make clean后重新编译
  • 注释OpenCV核心模块CMakeLists中的SIMD测试代码:
    ocv_add_dispatched_file_force_all(test_intrin128 TEST SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX)
    ocv_add_dispatched_file_force_all(test_intrin256 TEST AVX2 AVX512_SKX LASX)
    ocv_add_dispatched_file_force_all(test_intrin512 TEST AVX512_SKX)
    

解决步骤

从错误信息可判断,GCC的系统头文件被无关内容(如Vim文档片段)覆盖或损坏,这是编译失败的根源,修复步骤如下:

  1. 重装GCC相关包,修复损坏的头文件:

    sudo apt install --reinstall gcc-9 gcc-9-base libgcc-9-dev
    

    (当前使用GCC 9,需指定对应版本)

  2. 验证头文件恢复正常:
    检查任意报错的头文件,确认内容为正常的GCC intrinsic定义:

    cat /usr/lib/gcc/x86_64-linux-gnu/9/include/xsaveintrin.h
    
  3. 重新编译OpenCV:
    清理旧build目录,重新配置并编译:

    rm -rf build && mkdir build && cd build
    cmake [你的OpenCV配置参数] ..
    make -j$(nproc)
    

补充建议

若重装GCC后问题仍存在,可能是WSL文件系统损坏,可尝试:

  • 导出当前WSL分发版,重新导入干净实例
  • 切换至WSL 2版本,提升文件系统稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:55:54