Среда компилятора
-
вин10 64 бит
-
Виртуальная машина VMware Workstation Pro 16
-
Установка виртуальной машины Ubuntu 20.04
-
версия opencv: последняя версия 4.7 с github
Цель
- Кросс-компиляция opencv для встроенной платформы aarch64
скачать opencv
-
Вы можете скачать релизную версию напрямую с github или использовать git clone для последнего хранилища opencv.
-
гитхаб opencv https://github.com/opencv/opencv
-
git clone https://github.com/opencv/opencv.git
скомпилированный файл конфигурации
-
Здесь используется тулчейн кросс-компиляции
aarch64-linux-musleabi-gcc
, либо можно использовать официальный, предоставленный ARMaarch64-linux-gnu-gcc
-
Файл конфигурации:
platforms/linux/aarch64-gnu.toolchain.cmake
скопируйте копию, измените егоplatforms/linux/aarch64-musl.toolchain.cmake
, конечно, вы также можете использовать существующий напрямую -
Измените
platforms/linux/aarch64-musl.toolchain.cmake
имя цепочки инструментов кросс-компиляции в: здесь изменено на"aarch64-linux-musleabi"
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")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
Настройте цепочку инструментов кросс-компиляции
-
Загрузите и разархивируйте тулчейн кросс-компиляции aarch64, а затем настройте переменные среды.Измените
sudo vim /etc/profile
файл здесь и добавьте его в конец файлаexport PATH=$PATH:/home/zhangsz/linux/tools/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
, то есть экспортируйте путь тулчейна кросс-компиляции в переменную окружения -
source /etc/profile
Чтобы вступить в силу, вы можете ввестиaarch64-linux-musleabi-gcc -v
, чтобы подтвердить, что цепочка инструментов кросс-компиляции gcc вступает в силу.
скомпилировать opencv
-
Opencv использует cmake для настройки по умолчанию, а шаги по созданию динамической библиотеки (so) следующие:
-
В каталоге opencv создайте папку, например build_so
-
cd build_so
Войдите вbuild_so
каталог, а затем выполните команду конфигурации cmake:
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-musl.toolchain.cmake .. -DCMAKE_CXX_FLAGS="-march=armv8-a" -DCMAKE_C_FLAGS="-march=armv8-a" -DBUILD_SHARED_LIBS=ON -DWITH_ADE=OFF
-
Примечание.
-DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-musl.toolchain.cmake
Указывает на использование самоопределяемых файлов конфигурации кросс-компиляции gcc. -
-DBUILD_SHARED_LIBS=ON
Указывает на создание динамических библиотек (так) -
-DCMAKE_CXX_FLAGS="-march=armv8-a" -DCMAKE_C_FLAGS="-march=armv8-a"
Сгенерированную платформу можно указать:armv8-a
-
Наконец, обратите внимание на путь выполнения cmake, он там один
..
, то есть верхний уровень — это каталог opencv, аopencv/build_so
команда cmake в данный момент выполняется в каталоге
список конфигурации
- После выполнения cmake будет сгенерирован список make, но компиляция еще не началась
- Здесь нужно обратить внимание на то, правильно ли определен путь тулчейна кросс-компиляции, если нет, то обратите внимание на сброс переменных окружения тулчейна кросс-компиляции gcc.
- Если каталог установки не настроен, он будет установлен в каталоге установки в каталоге build_so по умолчанию.Обратите внимание, что если это кросс-скомпилированная библиотека opencv, ее нельзя установить по пути текущей системы Ubuntu на ПК. Потому что система Ubuntu находится на платформе x86/64.
заставить начать компиляцию
-
Ввод
make
для начала компиляции, многопоточной компиляции, такой какmake -j16
16-поточная компиляция, многопоточность необходимо настроить в соответствии с текущей конфигурацией аппаратного обеспечения компьютера (номер ядра ЦП). -
Виртуальная машина собрана с ubuntu.Рекомендуется использовать высокопроизводительный компьютер.Виртуальная машина оснащена 8-ядерным процессором и более 8 ГБ памяти.
- После завершения компиляции
make install
файлы библиотек и заголовков, сгенерированные opencv, будут храниться в текущемbuild_so/install
каталоге .
просмотреть продукт
- Путь продукта opencv по умолчанию:
build_so/install
zhangsz@zhangsz:~/rtt/opencv/opencv/build_so/install$ ls
bin include lib share
краткое содержание
-
Opencv может настраивать открытие и закрытие определенных сторонних программных пакетов и функций с помощью файлов cmake или команд cmake.
-
Opencv теперь можно использовать не только на платформах ПК, но и на встроенных платформах посредством кросс-компиляции.