Hi @VickNV , I’m able to resolve the library issue by following this guide - OpenCV: Cross compilation for ARM based Linux systems
lidar@nvidia-drive:~/opencv_aarch64/opencv/platforms/linux/build_hardfp$ cmake -DCMAKE_TOOLCHAIN_FILE=../aarch64-gnu.toolchain.cmake ../../..
.....
.....
lidar@nvidia-drive:~/opencv_aarch64/opencv/platforms/linux/build_hardfp$ make -j32
....
....
[ 99%] Built target opencv_perf_gapi
[100%] Building CXX object modules/gapi/CMakeFiles/opencv_test_gapi.dir/test/util/variant_tests.cpp.o
[100%] Linking CXX executable ../../bin/opencv_test_gapi
[100%] Built target opencv_test_gapi
lidar@nvidia-drive:~/opencv_aarch64/opencv/platforms/linux/build_hardfp$ file /home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_core.so.4.6.0
/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_core.so.4.6.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=06e3d678873383f824e0145835eb538a624493a5, not stripped
Now I tried rebuilding but there are still few undefined reference errors:
/home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/drive-t186ref-linux/targetfs/lib/aarch64-linux-gnu/libc-2.27.so: undefined reference to `_dl_exception_create@GLIBC_PRIVATE'
/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_dnn.so.4.6.0: undefined reference to `powf@GLIBC_2.27'
/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_dnn.so.4.6.0: undefined reference to `expf@GLIBC_2.27'
/home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/drive-t186ref-linux/targetfs/lib/aarch64-linux-gnu/libc-2.27.so: undefined reference to `__tunable_get_val@GLIBC_PRIVATE'
/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_video.so.4.6.0: undefined reference to `log2f@GLIBC_2.27'
/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_core.so.4.6.0: undefined reference to `logf@GLIBC_2.27'
collect2: error: ld returned 1 exit status
CMakeLists of Camera:
project(sample_camera C CXX)
find_library(TACOPIE_LIBRARY tacopie)
#-------------------------------------------------------------------------------
# Project files
#-------------------------------------------------------------------------------
set(PUBLIC_DOCS
README.md
)
set(SOURCES
main.cpp
)
set(LIBRARIES
${Driveworks_LIBRARIES}
samples_framework
lodepng-src
)
#-------------------------------------------------------------------------------
# Final target
#-------------------------------------------------------------------------------
link_directories("/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/")
add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARIES}
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_core.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_calib3d.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_dnn.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_features2d.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_flann.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_gapi.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_highgui.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_imgcodecs.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_imgproc.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_ml.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_objdetect.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_photo.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_stitching.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_video.so.4.6.0"
"/home/lidar/opencv_aarch64/opencv/platforms/linux/build_hardfp/lib/libopencv_videoio.so.4.6.0"
"/home/lidar/Documents/Nvidia_Drive/DRIVE_OS_5.2.0_SDK_Linux_OS_DRIVE_AGX_XAVIER/DRIVEOS/drive-t186ref-linux/targetfs/lib/aarch64-linux-gnu/libc-2.27.so"
${TACOPIE_LIBRARY}
)
set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "Samples")
# ------------------------------------------------------------------------------
# Install target
# ------------------------------------------------------------------------------
sdk_add_sample(${PROJECT_NAME})
sdk_add_sample_data(${PROJECT_NAME} "samples/sensors/camera/camera")
Please let me know what should I include in CMakeLists to resolve the undefined reference errors.
Also one more question, I have been using CPP_REDIS for sending camera frames in-memory to another process but again cross compilation issue is there so any other alternative to achieve this? Can ROS be a feasible option?