0

I am trying to cross-compile OpenCV project for arm64.

Below are my toolchain file and CMakeLists.txt:

# Set ROOTFS path
SET(CROSS_COMPILE aarch64-linux-gnu)
SET(CC_PREFIX /home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin)
SET(ROOTFS_PATH /home/yuriy/Documents/rootfs)

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)

# Enable cross compiler
SET(CMAKE_C_COMPILER ${CC_PREFIX}/${CROSS_COMPILE}-gcc)
SET(CMAKE_CXX_COMPILER ${CC_PREFIX}/${CROSS_COMPILE}-g++)
SET(CMAKE_LINKER ${CC_PREFIX}/${CROSS_COMPILE}-ld)
SET(CMAKE_AR ${CC_PREFIX}/${CROSS_COMPILE}-ar)
SET(CMAKE_OBJCOPY ${CC_PREFIX}/${CROSS_COMPILE}-objcopy)

# Crosscompile rootfs path for find_package and find_library
SET(CMAKE_FIND_ROOT_PATH ${ROOTFS_PATH})
SET(CMAKE_SYSROOT ${ROOTFS_PATH})

# Search for programs only in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# Search for libraries and headers only in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
cmake_minimum_required(VERSION 3.19)
project(MyProject)

set(CMAKE_CXX_STANDARD 20)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(MyProject main.cpp)
target_link_libraries(MyProject PUBLIC ${OpenCV_LIBS})

Now is a compilation output (make VERBOSE=1):

/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ --sysroot=/home/yuriy/Documents/rootfs -g CMakeFiles/MyProject.dir/main.cpp.o -o MyProject  /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_shape.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_stitching.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_superres.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videostab.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_aruco.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_bgsegm.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_bioinspired.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_ccalib.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_datasets.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_dpm.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_face.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_freetype.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_fuzzy.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_hdf.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_line_descriptor.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_optflow.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_plot.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_reg.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_saliency.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_stereo.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_structured_light.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_surface_matching.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_text.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_ximgproc.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_xobjdetect.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_xphoto.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_video.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_phase_unwrapping.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_rgbd.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_calib3d.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_features2d.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_flann.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_ml.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_photo.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.3.2.0 /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0 
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libm.so.6, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_shape.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libhdf5_serial.so.100, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_hdf.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libtesseract.so.4, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_text.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libtbb.so.2, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_ximgproc.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkInteractionStyle-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkRenderingLOD-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkIOPLY-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkIOGeometry-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkFiltersTexture-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkIOExport-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkRenderingContextOpenGL-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkRenderingOpenGL-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkIOImage-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkIOCore-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkRenderingFreeType-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkRenderingCore-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkFiltersExtraction-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkImagingCore-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkFiltersSources-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkFiltersGeneral-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkFiltersCore-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkCommonExecutionModel-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkCommonDataModel-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkCommonTransforms-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkCommonMath-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libvtkCommonCore-6.3.so.6.3, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_viz.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libpthread.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgtk-3.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgdk-3.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libcairo.so.2, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgdk_pixbuf-2.0.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgobject-2.0.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libglib-2.0.so.0, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_highgui.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libdc1394.so.22, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavcodec.so.57, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavformat.so.57, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavutil.so.55, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libswscale.so.4, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgphoto2.so.6, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgphoto2_port.so.12, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_videoio.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libjpeg.so.8, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libwebp.so.6, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libpng16.so.16, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgdcmMSFF.so.2.8, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libtiff.so.5, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libIlmImf-2_2.so.22, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libHalf.so.12, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgdcmDSED.so.2.8, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libz.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libdl.so.2, needed by /home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libproj.so.12, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libpoppler.so.73, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libjson-c.so.3, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libfreexl.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libqhull.so.7, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libgeos_c.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libepsilon.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libodbc.so.2, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libodbcinst.so.2, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libkmlbase.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libkmldom.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libkmlengine.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libexpat.so.1, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libxerces-c-3.2.so, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libopenjp2.so.7, needed by /home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20, not found (try using -rpath or -rpath-link)
/home/yuriy/Documents/toolchains/arm/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libnetcdf.so.13, needed by 
/home/yuriy/Documents/rootfs/usr/lib/libgdal.so.20: undefined reference to `opj_read_header'
/home/yuriy/Documents/rootfs/usr/lib/aarch64-linux-gnu/libopencv_shape.so.3.2.0: undefined reference to `logf@GLIBC_2.17'
...

For instance gcc can not find libm.so.6 library. However it is present inside system root.

$ pwd
/home/yuriy/Documents/rootfs
$ find . -name "libm.so.6"
./lib/aarch64-linux-gnu/libm.so.6

It appears that for all explicitly linked libraries cmake specified their exact path. However if shared library depends on any there are problems with detection. Seems like there is missing argument(s), such as rpath or something like that, needed by gcc in order to find libraries. The question is how to tell cmake to add this argument(s)? Or do I have to add all the paths manually?

Long Smith
  • 1,339
  • 3
  • 21
  • 40
  • `in order to find libraries` Do you have the libraries compiled _for the target architecture_? `warning: libm.so.6, needed by` Link with `m`. `Many similar errors` Are they all about missing `libm.so.6`? If so just link with `m`. If not, please post the errors. – KamilCuk Jul 11 '21 at 23:56
  • @KamilCuk yes, libraries are present inside rootfs directory. Many similar errors are about problems with linking other shared libraries. see the updated question please. There are too many errors, so I posted only part of them. Thanks! – Long Smith Jul 12 '21 at 07:33
  • Well, you have to cross-compile and link with _all_ dependencies of the library you want to use. `OpenCV` depends on glib, cairo, vtk, you have to cross-compile every one of them (and their dependencies) and then link with them. Did you? It is very tedious - which is why it's easier to use virtualization (like binfmt + qemu-static) to simulate whole cross-operating system. – KamilCuk Jul 12 '21 at 07:57
  • @KamilCuk could you just clarify why I can't just link against Existing libraries inside rootfs? I have the exact same rootfs which is ran on target system. – Long Smith Jul 12 '21 at 08:12
  • On top of that I am not sure why should I manually link them. When I build opencv application on my host system I do not have to specify all the dependencies manually. And considering that I have the ready root filesystem for target system it is not really clear why gcc can not just find all the necessary (already built) libraries inside rootfs directory. – Long Smith Jul 12 '21 at 08:14
  • @LongSmith: The problem is not with absolute paths generated by CMake. The problem is that your cross-compiler (linker) is **not configured** to search under `lib/aarch64-linux-gnu/`. Using [add_link_options](https://cmake.org/cmake/help/latest/command/add_link_options.html) you could add appropriate `-rpath-link` option to the linker. Or you may follow [that article](https://sysprogs.com/w/fixing-rpath-link-issues-with-cross-compilers/) and add appropriate script `/etc/ld.so.conf`. – Tsyvarev Jul 12 '21 at 08:32
  • Some notes about the toolchain file you use: 1. No needs to specify the **same directory** in `CMAKE_FIND_ROOT_PATH` and `CMAKE_SYSROOT` variables. Setting `CMAKE_SYSROOT` is sufficient. 2. While many toolchains set `CMAKE_LINKER` variable, this variable is NOT used automatically by CMake. But you may use this variable in definition of `CMAKE_CXX_LINK_EXECUTABLE` variable, which denotes template of the linker command line. [That question](https://stackoverflow.com/a/25274328/3440745) provides an example of such setting. – Tsyvarev Jul 12 '21 at 08:38

0 Answers0