Не в состоянии скомпилировать opencv с arm-linux-g ++ (кросс-компиляция)

0

Это мой первый запрос на stackoverflow. Я покажу вам проблему как можно более однозначную.

Эта библиотека отлично работает на компьютере x86, но когда дело доходит до перекрестной компиляции (я установил эту библиотеку в 2 разных каталогах, чтобы они оба существовали), она просто не может передать компиляцию, говоря такие вещи, как

"undefined reference to 'cvNamedWindow'"

Я знаю, это может означать, что я не смог ссылаться на библиотеки, но на x86 linux, просто набрав

'pkg-config --libs opencv'

было бы хорошо. Ах, я попробовал несколько способов, но это просто провалилось!

В настоящее время я не могу отправлять изображения, но я покажу вам файлы библиотеки.

libopencv_calib3d.so
libopencv_contrib.so
libopencv_core.so
libopencv_features2d.so
libopencv_flann.so
libopencv_gpu.so
libopencv_highgui.so
libopencv_imgproc.so
libopencv_legacy.so
libopencv_ml.so
libopencv_nonfree.so
libopencv_objdetect.so
libopencv_photo.so
libopencv_stitching.so
libopencv_superres.so
libopencv_ts.so
libopencv_video.so
libopencv_videostab.so

А как обращаться к библиотекам? Я пробовал много популярных результатов Google, но я просто потерпел неудачу, поэтому мне нужна ваша помощь, спасибо вам большое!

  • 0
    Итак, используя nm в вашей x86-системе, вы можете найти, где это имя объявлено? Тогда сравнить тот же файл на ARM?
Теги:
opencv
cross-compiling

1 ответ

0

В Makefile (где я предполагаю pkg-config --libs opencv is), замените 'pkg-config --libs opencv' на

-L<directory where the ARM .so files are> -lopencv_calib3d -lopencv_contrib ...

Возможно, вам придется изменить порядок опций -l в зависимости от того, какая из библиотек относится к другим библиотекам. Библиотека, которая ссылается на символ в другой библиотеке, должна преследовать ее в командной строке, потому что библиотеки выполняются по порядку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню