Используя CMake (3.28), сборка систематически выдает:
/usr/include/c++/13/cstdlib:79:15: фатальная ошибка: stdlib.h: такого файла или каталога нет
...
#include_next
Я пробовал с gcc 12 и 13. stdlib.h на самом деле есть в /usr/include/c++/13/ (упоминается в ошибке) и /usr/include/.
Код: Выделить всё
g++ -v -E -x c++ /dev/null#include "..." поиск начинается здесь:
#include поиск начинается здесь:
/usr/include/c++/13
/usr/include/x86_64-linux-gnu/c++/13
/usr/include/c++/13/backward
/usr/lib/gcc/x86_64-linux-gnu/13/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
Конец поиска list.
Есть очень старые упоминания об одной и той же ошибке, связанной с использованием предварительно скомпилированных заголовков, но сейчас эта опция отключена по умолчанию (Ошибка компиляции OpenCV, фатальная ошибка: stdlib.h: Нет такого файла или каталога, https://answers.opencv.org/question/116 ... h-missing/, https://www.linuxquestions.org/question ... 175627331/).
Для теперь я строю, следуя этой процедуре:
Код: Выделить всё
cd
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
mkdir opencv_build
mkdir opencv_install
- установите каталог сборки opencv_build
- установите CMAKE_INSTALL_PREFIX на opencv_install
- установите OPENCV_EXTRA_MODULES_PATH на opencv_contrib/modules
- установите для OPENCV_ENABLE_NONFREE значение «Вкл.»
- установите для With_CUDA значение «Вкл.» (хотя в данном случае это кажется бессмысленным)
- настройте и сгенерируйте
Код: Выделить всё
cmake --build ./opencv_build --target install
Почему сборка завершается с ошибкой, когда stdlib.h явно существует в ожидаемом месте, и как я могу решить эту проблему?
Дополнительный контекст:
- Одна и та же сборка работает в Windows как с MSVC, так и с GCC.
/> - Я мог бы собрать предыдущую версию OpenCV 4 на Ubuntu 22.04 на том же оборудовании
Подробнее здесь: https://stackoverflow.com/questions/798 ... ch-file-or
Мобильная версия