来自NDK 5b的ld.exe找不到库

时间:2011-04-07 10:24:25

标签: opencv makefile android-ndk

我有一个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文件,可能需要一个libcs​​core.so文件才能使其正常工作。但我不太确定。

从我在互联网上发现的情况来看,似乎链接器可能由于多种原因导致问题,我真的很想知道这是怎么回事,因为代码本身工作正常。我希望有人可以告诉我如何更改我的make文件,以便它也适用于较新的NDK或指向我寻找问题的方向。

1 个答案:

答案 0 :(得分:0)

对我来说ld.exe在指定的路径下找不到libs,因为我使用的是cygwin风格的路径格式:

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

将此更改为正常的Windows路径后:

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

Linker工作正常。