![在 macos 上从源代码构建 opencv 时出现编译器错误](https://linux22.com/image/1592482/%E5%9C%A8%20macos%20%E4%B8%8A%E4%BB%8E%E6%BA%90%E4%BB%A3%E7%A0%81%E6%9E%84%E5%BB%BA%20opencv%20%E6%97%B6%E5%87%BA%E7%8E%B0%E7%BC%96%E8%AF%91%E5%99%A8%E9%94%99%E8%AF%AF.png)
我正在尝试按照此博客在 Mac 上构建 OpenCV 4.1.0:https://www.learnopencv.com/install-opencv-4-on-macos/
这是准备 cmake 的命令行 - 成功了:
cmake -DOPENCV_EXTRA_MODULES_PATH=/git/opencv_contrib-4.1.0/modules -DPYTHON_DEFAULT_EXECUTABLE=python3 -DCMAKE_CXX_COMPILER=/usr/local/gcc-9.1/bin/g++-9.1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_opencv_python2=False -DBUILD_opencv_python3=True -DPYTHON3_EXECUTABLE=python3 ../
然后制作
make -j4
失败的原因如下internal compiler error
:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
完整输出如下:
$ make -j4
[ 1%] Built target zlib
[ 4%] Built target libjpeg-turbo
[ 4%] Built target libjasper
[ 8%] Built target libwebp
[ 8%] Built target quirc
[ 9%] Built target ippiw
[ 9%] Built target ittnotify
[ 9%] Built target opencv_videoio_plugins
[ 9%] Building CXX object modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/alloc.cpp.o
[ 9%] Building CXX object modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/check_cycles.cpp.o
Scanning dependencies of target opencv_test_core_pch_dephelp
[ 10%] Building CXX object 3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/arena.cc.o
[ 10%] Building CXX object modules/core/CMakeFiles/opencv_test_core_pch_dephelp.dir/opencv_test_core_pch_dephelp.cxx.o
In file included from /git/opencv-4.1.0/3rdparty/protobuf/src/google/protobuf/arena.h:36,
from /git/opencv-4.1.0/3rdparty/protobuf/src/google/protobuf/arena.cc:31:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/arena.cc.o] Error 1
make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 10%] Building CXX object modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/edge.cpp.o
In file included from /usr/local/gcc-9.1/include/c++/9.1.0/bits/uniform_int_dist.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/bits/stl_algo.h:66,
from /usr/local/gcc-9.1/include/c++/9.1.0/algorithm:62,
from /git/opencv-4.1.0/build/3rdparty/ade/ade-0.1.1d/sources/ade/source/alloc.cpp:12:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[2]: *** [modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/alloc.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /usr/local/gcc-9.1/include/c++/9.1.0/bits/hashtable_policy.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/bits/hashtable.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/unordered_map:46,
from /git/opencv-4.1.0/build/3rdparty/ade/ade-0.1.1d/sources/ade/source/check_cycles.cpp:9:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[2]: *** [modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/check_cycles.cpp.o] Error 1
In file included from /usr/local/gcc-9.1/include/c++/9.1.0/bits/uniform_int_dist.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/bits/stl_algo.h:66,
from /usr/local/gcc-9.1/include/c++/9.1.0/algorithm:62,
from /git/opencv-4.1.0/modules/core/include/opencv2/core/base.hpp:55,
from /git/opencv-4.1.0/modules/core/include/opencv2/core.hpp:54,
from /git/opencv-4.1.0/modules/ts/include/opencv2/ts.hpp:10,
from /git/opencv-4.1.0/modules/core/test/test_precomp.hpp:7,
from /git/opencv-4.1.0/build/modules/core/opencv_test_core_pch_dephelp.cxx:1:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[2]: *** [modules/core/CMakeFiles/opencv_test_core_pch_dephelp.dir/opencv_test_core_pch_dephelp.cxx.o] Error 1
make[1]: *** [modules/core/CMakeFiles/opencv_test_core_pch_dephelp.dir/all] Error 2
In file included from /usr/local/gcc-9.1/include/c++/9.1.0/bits/hashtable_policy.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/bits/hashtable.h:35,
from /usr/local/gcc-9.1/include/c++/9.1.0/unordered_map:46,
from /git/opencv-4.1.0/build/3rdparty/ade/ade-0.1.1d/sources/ade/include/ade/graph.hpp:15,
from /git/opencv-4.1.0/build/3rdparty/ade/ade-0.1.1d/sources/ade/source/edge.cpp:12:
/usr/local/gcc-9.1/include/c++/9.1.0/limits:1668:7: internal compiler error: Illegal instruction: 4
1668 | max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
| ^~~
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://gcc.gnu.org/bugs/> for instructions.
make[2]: *** [modules/CMakeFiles/ade.dir/__/3rdparty/ade/ade-0.1.1d/sources/ade/source/edge.cpp.o] Error 1
make[1]: *** [modules/CMakeFiles/ade.dir/all] Error 2
make: *** [all] Error 2
openCV
如果有任何人士曾在 Mac 上(以及使用)成功构建过此版本,opencv_contrib
我将非常感谢他们的提供建议。