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文档片段)覆盖或损坏,这是编译失败的根源,修复步骤如下:
重装GCC相关包,修复损坏的头文件:
sudo apt install --reinstall gcc-9 gcc-9-base libgcc-9-dev(当前使用GCC 9,需指定对应版本)
验证头文件恢复正常:
检查任意报错的头文件,确认内容为正常的GCC intrinsic定义:cat /usr/lib/gcc/x86_64-linux-gnu/9/include/xsaveintrin.h重新编译OpenCV:
清理旧build目录,重新配置并编译:rm -rf build && mkdir build && cd build cmake [你的OpenCV配置参数] .. make -j$(nproc)
补充建议
若重装GCC后问题仍存在,可能是WSL文件系统损坏,可尝试:
- 导出当前WSL分发版,重新导入干净实例
- 切换至WSL 2版本,提升文件系统稳定性
内容的提问来源于stack exchange,提问作者user24604957
相关产品推荐
相关产品推荐

