Это мой первый запрос на 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, но я просто потерпел неудачу, поэтому мне нужна ваша помощь, спасибо вам большое!
В Makefile (где я предполагаю pkg-config --libs opencv
is), замените 'pkg-config --libs opencv' на
-L<directory where the ARM .so files are> -lopencv_calib3d -lopencv_contrib ...
Возможно, вам придется изменить порядок опций -l в зависимости от того, какая из библиотек относится к другим библиотекам. Библиотека, которая ссылается на символ в другой библиотеке, должна преследовать ее в командной строке, потому что библиотеки выполняются по порядку.
nm
в вашей x86-системе, вы можете найти, где это имя объявлено? Тогда сравнить тот же файл на ARM?