Sysprogs forums › Forums › VisualGDB › Cross compiling OpenCV 4.9.0 for Raspberry Pi 64bit (latest bookworm OS)
- This topic has 1 reply, 2 voices, and was last updated 4 months, 3 weeks ago by support.
-
AuthorPosts
-
July 31, 2024 at 13:44 #35848ptihanyiParticipant
Hello!
Based on the description of VisualGDB (https://visualgdb.com/tutorials/raspberry/opencv/build/), I tried to cross-compile OpenCV 4.9.0 on Raspberry Pi 3 (latest Raspberry OS 64bit).
Everything went fine until the translation, when the process was interrupted with the following error:FAILED: modules/videoio/CMakeFiles/opencv_videoio.dir/src/videoio_c.cpp.o
c:\SysGCC\raspberry64\bin\aarch64-linux-gnu-g++.exe --sysroot=C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot -DCVAPI_EXPORTS -DENABLE_PLUGINS -DHAVE_CAMV4L2 -DHAVE_DC1394_2 -DHAVE_FFMPEG -DHAVE_GSTREAMER -DHAVE_OBSENSOR -DHAVE_OBSENSOR_V4L2 -D_USE_MATH_DEFINES -D__OPENCV_BUILD=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -IC:/projects/opencv-rpi/opencv-4.9.0/build/VisualGDB/Debug -IC:/projects/opencv-rpi/opencv-4.9.0/modules/videoio/include -IC:/projects/opencv-rpi/opencv-4.9.0/build/VisualGDB/Debug/modules/videoio -IC:/projects/opencv-rpi/opencv-4.9.0/modules/core/include -IC:/projects/opencv-rpi/opencv-4.9.0/modules/imgproc/include -IC:/projects/opencv-rpi/opencv-4.9.0/modules/imgcodecs/include -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include/gstreamer-1.0 -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include/aarch64-linux-gnu -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include/glib-2.0 -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/lib/aarch64-linux-gnu/glib-2.0/include -isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include/orc-0.4 -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG -std=c++11 -fPIC -MD -MT modules/videoio/CMakeFiles/opencv_videoio.dir/src/videoio_c.cpp.o -MF modules\videoio\CMakeFiles\opencv_videoio.dir\src\videoio_c.cpp.o.d -o modules/videoio/CMakeFiles/opencv_videoio.dir/src/videoio_c.cpp.o -c C:/projects/opencv-rpi/opencv-4.9.0/modules/videoio/src/videoio_c.cpp
In file included from c:\sysgcc\raspberry64\aarch64-linux-gnu\include\c++\12/bits/stl_algo.h:69,
from c:\sysgcc\raspberry64\aarch64-linux-gnu\include\c++\12/algorithm:61,
from C:/projects/opencv-rpi/opencv-4.9.0/modules/core/include/opencv2/core/base.hpp:55,
from C:/projects/opencv-rpi/opencv-4.9.0/modules/core/include/opencv2/core.hpp:53,
from C:/projects/opencv-rpi/opencv-4.9.0/modules/videoio/include/opencv2/videoio.hpp:46,
from C:/projects/opencv-rpi/opencv-4.9.0/modules/videoio/src/precomp.hpp:57,
from C:/projects/opencv-rpi/opencv-4.9.0/modules/videoio/src/videoio_c.cpp:5:
c:\sysgcc\raspberry64\aarch64-linux-gnu\include\c++\12/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
75 | #include_next <stdlib.h>
| ^~~~~~~~~~
compilation terminated.
After a long search I found this bug ticket: https://gitlab.kitware.com/cmake/cmake/-/issues/23013 and this forum topic: https://discourse.cmake.org/t/drive-letter-inconsistency -on-windows-between-find-path-and-implicit-include-directories/1221
If we look at the compile command in the error message, it clearly includes the option “-isystem c:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include”.
But if I list “C:\projects\opencv-rpi\opencv-4.9.0\build\VisualGDB\Debug\CMakeFiles\3.28.1-gc5d9601-dirty\CMakeCXXCompiler.cmake” I see this:
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES “C:/SysGCC/raspberry64/aarch64-linux-gnu/include/c++/12;C:/SysGCC/raspberry64/aarch64-linux-gnu/include/c++/12/backward; /lib/gcc/aarch64-linux-gnu/12/include;C:/SysGCC/raspberry64/lib/gcc/aarch64-linux-gnu/12/include-fixed;C:/SysGCC/raspberry64/aarch64-linux-gnu /include;C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include/aarch64-linux-gnu;C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include”)
At the end of the line there is the entry “C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include”, but the “C” is capitalized!This is also the case with the “CMakeCCompiler.cmake” file.
I tried the trick of deleting “build.ninja” and rewriting “C:/SysGCC/raspberry64/aarch64-linux-gnu/sysroot/usr/include” in “CMakeCCompiler.cmake” and “CMakeCXXCompiler.cmake” “- entry, change “C” to “c”.
I reloaded the project, started the build process and it completed perfectly!
Based on these, I think that the problem is caused by the fact that for some reason VisualGDB specifies the drive letter in lowercase letters in the toolchain root path.How can I eliminate this problem?
Thank you in advance for your help!August 3, 2024 at 09:32 #35854supportKeymasterHi,
No problem, we can try to help you. Please let us know the email address associated with your license, so that we could link it to your support profile.
-
AuthorPosts
- You must be logged in to reply to this topic.