Я могу кросс-компилировать простую программу на C ++.(напр. g++ -o test test.cpp & arm-linux-gnueabihf-g++ -o test test.cpp
).Но когда я включаю заголовочные файлы OpenCV в программу на C ++ и кросс-компиляцию, это приводит к ошибке. (Например, arm-linux-gnueabihf-g++ -o ocv_test ocv_test.cpp $(pkg-config --libs --cflags opencv)
).
Также я могу успешно скомпилировать с компилятором по умолчанию, т.е. g ++. (Например,g++ -o ocv_test ocv_test.cpp $(pkg-config --libs --cflags opencv)
)
Я выполнил cmake с
-D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm.toolchain.cmake \.
согласно документам opencv.Это не помогло.
Я добавил opencv, включив dir в компиляцию cmd, т.е. -I/path/to/opencv/include
и удалив pkg-config
.Это не помогло.
Я попытался изменить файл arm-gnueabi.toolchain.cmake, экспортировав PKG_CONFIG_LIBDIR
в соответствии с предложением кого-то.Это не помогло.
Я получил следующую ошибку:
__/usr/lib/gcc-cross/arm-linux-gnueabihf/7/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lopencv_shape
//usr/local/lib/libopencv_stitching.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status__
Я хочу, чтобы мое кросс-скомпилированное приложение OpenCV работало на RaspberryPI. Я в замешательстве.Кросс-компиляция исходников OpenCV с опцией -D CMAKE_TOOLCHAIN_FILE
должна позволить нам кросс-компилировать программы OpenCV C ++.В противном случае нам придется отдельно создавать или создавать (кросс-компилировать) каждую программу OpenCV C ++ на сборочной машине.