我有一个Android的OpenCV端口的make文件。由于这个项目似乎已经死了,所以没有任何更新,最后支持的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或指向我寻找问题的方向。
答案 0 :(得分:0)
对我来说ld.exe在指定的路径下找不到libs,因为我使用的是cygwin风格的路径格式:
-L/cygdrive/c/Users/tkozak/dev/Android/libs
将此更改为正常的Windows路径后:
-LC:/Users/tkozak/dev/Android/libs
Linker工作正常。