Перейти к содержимому
Compvision.ru
Frimen

OpenCV на Android

Recommended Posts

Всем привет.

Столкнулся с такой проблемой

Необходимо собрать OpenCV на Android с архитектурой x86.

Нашёл неплохую статью по сборке OpenCV под Android. http://recog.ru/blog/opencv/14.html

Только там не написано как его собрать под x86.

Может быть кто нибудь подскажет как в конфигурационных файлах поменять архитектуру ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если у вас нет аппарата с ARMv7, то устанавливаем переменную ARM_TARGET=«armeabi».

не?

ну может в Cmake еще есть опции.

p.s. неплохой блог.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Если у вас нет аппарата с ARMv7, то устанавливаем переменную ARM_TARGET=«armeabi».

mrgloom Я полагаю здесь имеется ввиду, что библиотека будет собираться просто под ARM.

Мне надо собрать OpenCV под таблетку с архитектурой x86.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну надо сам android наверно пересобирать под x86 (Android NDK, Android SDK) , хотя это я так говорю навскидку.

http://www.android-x86.org/

http://groups.google.com/group/android-porting/browse_thread/thread/66862bdb52dac936?pli=1

http://www.codernotes.com/2011/53/how-to-build-android-x86-from-source/

но мне кажется более простой способ это в CMAKE выбрать другую платформу(Android hardware targets) кроме ARM(если она поддерживается) или как то поправить скрипт руками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ообщем переписал билдовы скрипт для make под x86. Вроде собралось.

Теперь вознкла новая проблема. (Помойму она возникает даже при сборке под arm)

После сборки самой библиотеки надо собрать ещё какието вспомогательные библиотеки, которые необходимы для сборки opencv риложений под android.

При запуске скрипта выдаёт следующую ошибку:

[root@icdkuser android-opencv]# ./cmake_android.sh

-- CMAKE_CXX_FLAGS for x86 --sysroot=/home/icdkuser/Documents/Android/development/android-ndk-r6/platforms/android-9/arch-x86 -fPIC -DANDROID -Wno-psabi -fsigned-char

-- CMAKE_C_FLAGS for x86 --sysroot=/home/icdkuser/Documents/Android/development/android-ndk-r6/platforms/android-9/arch-x86 -fPIC -DANDROID -Wno-psabi -fsigned-char

-- tool ok --sysroot=/home/icdkuser/Documents/Android/development/android-ndk-r6/platforms/android-9/arch-x86 -fPIC -DANDROID -Wno-psabi -fsigned-char

CMake Error at jni/CMakeLists.txt:38 (INCLUDE):

include called with wrong number of arguments. Include only takes one

file.

CMake Error at jni/CMakeLists.txt:43 (SET_SWIG_JAVA_PACKAGE):

Unknown CMake command "SET_SWIG_JAVA_PACKAGE".

-- Configuring incomplete, errors occurred!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

SWIG-2.0.4 уже стоит. Может быть какие нибудь дополнительные переменные окружения нужно прописать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Найдите в файлах CMake эту строчку (SET_SWIG_JAVA_PACKAGE) и посмотрите что конкретно ему не нравится. Иногда можно просто закомментировать :) хотя это не правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В скрипте используется только в одном месте

#convenience macro for swig java packages

macro( SET_SWIG_JAVA_PACKAGE package_name )

string( REGEX REPLACE "[.]" "/" package_name_output ${package_name} )

set( CMAKE_SWIG_OUTDIR ${SWIG_OUTPUT_ROOT}/${package_name_output} )

set( CMAKE_SWIG_FLAGS "-package" "\"${package_name}\"" )

endmacro()

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А компилировали как здесь?

ЗЫ: в SVN сейчас для андроида много чего меняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да компилировал так как написанно в документации, за одним лиш исключением, что в билд скрипте поменял пути на пути к тулчейну под x86.

Я немогу найти нигде чё делает функция macro, которая используется в билд скрипте сmake ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообщем решил проблему с macro( SET_SWIG_JAVA_PACKAGE package_name )- это оказалось определение функции SET_SWIG_JAVA_PACKAGE с параметром package_name.

Перенёс код функции в то место где она используется и вроде cmake сгенерировал файлы.

Теперь проблема вознкла при вызове самого make. make енерирует объектники, но неможет их слинковать в конкретную библиотеку. Пишет:

[root@icdkuser build]# make

Linking CXX shared module ../../libs/x86/libandroid-opencv.so

CMakeFiles/android-opencv.dir/gl_code.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':

gl_code.cpp:(.text+0xec3): undefined reference to `__dso_handle'

CMakeFiles/android-opencv.dir/image_pool.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':

image_pool.cpp:(.text+0x91b): undefined reference to `__dso_handle'

/home/icdkuser/Documents/Android/development/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/x86/libstdc++.a(system_error.o): In function `__static_initialization_and_destruction_0':

/tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libstdc++-v3/src/system_error.cc:65: undefined reference to `__dso_handle'

/home/icdkuser/Documents/Android/development/android-ndk-r6/sources/cxx-stl/gnu-libstdc++/libs/x86/libstdc++.a(eh_globals.o): In function `__static_initialization_and_destruction_0':

/tmp/ndk-digit/src/build/../gcc/gcc-4.4.3/libstdc++-v3/libsupc++/eh_globals.cc:118: undefined reference to `__dso_handle'

collect2: ld returned 1 exit status

make[2]: *** [../libs/x86/libandroid-opencv.so] Error 1

make[1]: *** [jni/CMakeFiles/android-opencv.dir/all] Error 2

make: *** [all] Error 2

Из за чего он может не линковаться ? Библиотеки вроде все на месте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×