Как изменить Install Dir при сборке OpenCV 3.1.0 в Ubuntu 18.04 для Android NDK18rc и ARMEABI-7? - PullRequest
0 голосов
/ 06 октября 2018

Более одной недели я пытаюсь скомпилировать OpenCV 3.1.0 для Android с NDK r18 в Ubuntu 18.04.

Я использовал следующую команду:

cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
  -DANDROID_NDK="/home/qamaruddin/Downloads/android-ndk-r18-linux-x86_64/android-ndk-r18/" \
  -DCMAKE_TOOLCHAIN_FILE="/home/qamaruddin/Downloads/android-ndk-r18-linux-x86_64/android-ndk-r18/build/cmake/android.toolchain.cmake" \
  -DANDROID_NATIVE_API_LEVEL=19 \
  -DANDROID_ABI="armeabi-v7a" \
  -DWITH_CUDA=OFF \
  -DWITH_MATLAB=OFF \
  -DBUILD_ANDROID_EXAMPLES=OFF \
  -DBUILD_DOCS=OFF \
  -DBUILD_PERF_TESTS=OFF \
  -DBUILD_TESTS=OFF \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
  -DCMAKE_C_COMPILER=/usr/bin/clang \
  -DOPENCV_EXTRA_MODULES_PATH="/opt/opencv_contrib/modules/"  \
  -DCMAKE_INSTALL_PREFIX:PATH="/home/mig-ocv/ocv-android-310/" \
  -DEXECUTABLE_OUTPUT_PATH:PATH="/home/mig-ocv/ocv-android-310/" \
  -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH="/home/mig-ocv/ocv-android-310/" \
  -DCMAKE_BUILD_TYPE=Release \
  /opt/opencv

Свернут по make& make install / strip.

Я пробовал разные версии OpenCV 3, такие как 3.1.0, 3.4.3 и 3.4.0.Я также пробовал NDKr15c, NDKr17c и NDKr18c.

Я пробовал следующие варианты:

  1. Изменить версию NDK
  2. Изменить версию OpenCV 3
  3. Установка с использованием скрипта Python, расположенного в opencv / platform / androind / setup.py
  4. Сборка с использованием CMAKE
  5. Использование Ninja для CMAKE, но при этом выдается ошибка: "ninja: error: loading 'build / build.global.ninja ': нет такого файла или каталога "
  6. Установить без Ninja с CMAKE

В данный момент, с помощью вышеприведенной команды для сборки CMAKE успешно,но я не могу изменить целевой каталог установки, так как он всегда встраивается в / usr / local /, и когда я проверяю целевой каталог, у него нет знакомой структуры OpenCV for Android, которая выглядит так:

1- и т. д. 2- java 3- native -> jni -> include

Интересно, что не так в моем процессе, который так затрудняет сборку OpenCV 3 из исходного кода для Android с OpenCV Contrib.

Обратите внимание, что $ ANDROID_HOME установлен вкаталог android SDKs в моей системе и $ ANDROID_NDK также установлены.

Я видел все повторяющиеся вопросы на StackOverflow и других форумах, но ни один из них не работает в моем случае.

Когда я пытаюсьпостроить с ниндзя с этой командой:

cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
  -DANDROID_NDK="$HOME/Downloads/android-ndk-r17b/" \
  -DCMAKE_TOOLCHAIN_FILE="$HOME/Downloads/android-ndk-r17b/build/cmake/android.toolchain.cmake" \
  -DANDROID_NATIVE_API_LEVEL=21 \
  -DANDROID_ABI="armeabi-v7a" \
  -DWITH_CUDA=OFF \
  -DWITH_MATLAB=OFF \
  -DBUILD_ANDROID_EXAMPLES=OFF \
  -DBUILD_DOCS=OFF \
  -DBUILD_PERF_TESTS=OFF \
  -DBUILD_TESTS=OFF \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
  -DCMAKE_C_COMPILER=/usr/bin/clang \
  -DOPENCV_EXTRA_MODULES_PATH="$HOME/ocv/opencv_contrib/modules/"  \
  -DCMAKE_INSTALL_PREFIX:PATH="$HOME/agusta/ocv-android-310/" \
  -DEXECUTABLE_OUTPUT_PATH:PATH="$HOME/agusta/ocv-android-310/" \
  -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH="$HOME/agusta/ocv-android-310/" \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja \
  $HOME/ocv/opencv

Я получаю:

CMake Deprecation Warning at CMakeLists.txt:72 (cmake_policy):


The OLD behavior for policy CMP0022 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


CMake Deprecation Warning at CMakeLists.txt:77 (cmake_policy):
  The OLD behavior for policy CMP0026 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


CMake Deprecation Warning at CMakeLists.txt:82 (cmake_policy):
  The OLD behavior for policy CMP0042 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


-- Check for working CXX compiler: /home/qamaruddin/Downloads/android-ndk-r17b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
CMake Error: Generator: execution of make failed. Make command was: "/usr/bin/ninja" "cmTC_c4cee/fast"
-- Check for working CXX compiler: /home/qamaruddin/Downloads/android-ndk-r17b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -- broken
CMake Error at /usr/local/share/cmake-3.12/Modules/CMakeTestCXXCompiler.cmake:45 (message):
  The C++ compiler

    "/home/qamaruddin/Downloads/android-ndk-r17b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /home/qamaruddin/agusta/temp/CMakeFiles/CMakeTmp

    Run Build Command:"/usr/bin/ninja" "cmTC_c4cee/fast"
    No such file or directory
    Generator: execution of make failed. Make command was: "/usr/bin/ninja" "cmTC_c4cee/fast"




  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:93 (project)


-- Configuring incomplete, errors occurred!
See also "/home/qamaruddin/agusta/temp/CMakeFiles/CMakeOutput.log".
See also "/home/qamaruddin/agusta/temp/CMakeFiles/CMakeError.log".
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_CXX_COMPILER= /usr/bin/clang++
CMAKE_C_COMPILER= /usr/bin/clang

-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_ANDROID_EXAMPLES
    BUILD_DOCS
    BUILD_PERF_TESTS
    BUILD_TESTS
    EXECUTABLE_OUTPUT_PATH
    OPENCV_EXTRA_MODULES_PATH
    WITH_CUDA
    WITH_MATLAB


-- Build files have been written to: /home/qamaruddin/agusta/temp

1 Ответ

0 голосов
/ 06 октября 2018

Мне удалось заставить его работать, в основном, OCV не поддерживал NDKr18, и мне также пришлось установить ниндзя из исходного кода.Я также использовал python3 вместо python2 для запуска opencv / platform / android / build_sdk.py.Еще одна вещь заключается в том, что я использую Eclipse Android ADT, который Google ни с того ни с сего не одобрил; (но я нахожу его очень быстрым по сравнению с тяжелым Android Studio.

# export ANDROID_ABI=armeabi-v7a
# export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-4.8
# export ANDROID_NDK=$HOME/Downloads/android-ndk-r17c-linux-x86_64/android-ndk-r17c/
# export ANDROID_SDK=$HOME/android-sdks/

./../opencv/platforms/android/build_sdk.py --extra_modules_path=/opt/opencv_contrib/modules --config ../opencv/platforms/android/ndk-17.config.py 
...