У меня есть файл make из порта OpenCV для Android. Поскольку этот проект выглядит довольно мертвым, обновлений не было, и последняя поддерживаемая версия NDK - 4b. С этой версией NDK все компилируется, только находи, и код также работает. Однако, если я собираю его, используя более новую версию, я получаю следующую ошибку.
C:/Android/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld.exe: cannot find -lcxcore
collect2: ld returned 1 exit status
make: *** [/cygdrive/c/Users/<Name>/workspace/<Project>/obj/local/armeabi/libopencv.so] Error 1
Я думаю, что это вызвано этой строкой:
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -ldl -llog \
-L$(TARGET_OUT) -lcxcore -lcv -lcvaux -lcvml -lcvhighgui
Однако, когда я проверяю, куда указывает $ (TARGET_OUT), и вижу, есть ли библиотека, она доступна. Я думаю, что проблема в том, что я получаю файл libcxcore.a, и для этого может потребоваться файл libcscore.so. Но я не совсем уверен.
Из того, что я обнаружил в Интернете, кажется, что компоновщик может вызывать проблемы по многим причинам, и мне действительно интересно, как это могло быть, поскольку сам код работает просто отлично. Я надеюсь, что кто-нибудь подскажет мне, как изменить мои make-файлы, чтобы они также работали с более новыми NDK, или указать мне, где искать проблему.