ld.exe из NDK 5b не может найти библиотеки - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть файл 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, или указать мне, где искать проблему.

1 Ответ

0 голосов
/ 14 ноября 2012

Для меня ld.exe не удалось найти библиотеки по указанному пути, потому что я использовал формат пути в стиле cygwin:

-L/cygdrive/c/Users/tkozak/dev/Android/libs

После изменения обычного пути к Windows:

-LC:/Users/tkozak/dev/Android/libs

Линкер работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...