Среда компилятора
-
вин10 64 бит
-
Виртуальная машина VMware Workstation Pro 16
-
Установка виртуальной машины Ubuntu 20.04
-
версия opencv: последняя версия 4.7 с github
Цель
- Кросс-компиляция opencv для создания статической библиотеки (.a) для встроенной платформы aarch64.
Метод конфигурации среды
- Обратитесь к предыдущей статье о платформе Ubuntu 20.04 aarch64 для кросс-компиляции opencv.
Создать статическую библиотеку
-DBUILD_SHARED_LIBS=OFF
По умолчанию будет сгенерирована динамическая библиотека (так), а генерацию динамической библиотеки можно отключить через cmake configuration , чтобы можно было сгенерировать статическую библиотеку
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-musl.toolchain.cmake .. -DCMAKE_CXX_FLAGS="-march=armv8-a --static" -DCMAKE_C_FLAGS="-march=armv8-a --static" -DBUILD_SHARED_LIBS=OFF
другой
-
Если вы чувствуете, что команда cmake слишком длинная, вы можете поместить
platforms/linux/aarch64-musl.toolchain.cmake
в нее каждую конфигурацию, чтобы команда cmake была очень оптимизирована. -
Откройте
vim platforms/linux/aarch64-musl.toolchain.cmake
, а затем настройте переключатель каждой функции или сторонней библиотеки.
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
set(GNU_MACHINE "aarch64-linux-musleabi" CACHE STRING "GNU compiler triple")
set(CMAKE_BUILD_TYPE "Release")
set(WITH_CAROTENE OFF)
set(WITH_ITT OFF)
set(WITH_OPENCL OFF)
set(WITH_ADE OFF)
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
-
set(CMAKE_BUILD_TYPE "Release")
Скомпилируйте релизную версию -
set(WITH_ITT OFF)
закрыто -
set(WITH_CAROTENE OFF)
Закрыта сторонняя библиотека CAROTENE -
set(WITH_OPENCL OFF)
Закрыто -
set(WITH_ADE OFF)
Закрыть ADE
компилировать
-
make, можно сделать многопоточную компиляцию типа make -j12, что значительно ускоряет скорость компиляции.Конечно, аппаратная конфигурация компьютера для компиляции должна быть выше, с многоядерностью и большим объемом памяти
-
make install, вы можете положить сгенерированную библиотеку opencv в текущую директорию
build_a/install
, потому что она кросс-компилируемая, поэтому вам нужно обратить особое внимание на путь установки, не устанавливайте ее в системную директорию.
Посмотреть скомпилированные продукты
- После того, как make будет скомпилирован и выполнен,
make install
он будет сохранен по указанному пути, который не подходит по умолчанию, и будет находиться в текущем пути сборки, напримерbuild_a/install
каталоге
краткое содержание
-
Вы можете настроить cmake для переключения различных необходимых опций, включая сторонние библиотеки и т. д.
-
Вы можете создать статическую библиотеку opencv, но использовать статическую библиотеку и подключаться статически, поэтому объем приложения будет относительно большим.