【问题标题】:ld.exe from NDK 5b can't find librariesNDK 5b 中的 ld.exe 找不到库
【发布时间】:2011-04-07 10:24:24
【问题描述】:

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

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

【问题讨论】:

    标签: opencv makefile android-ndk


    【解决方案1】:

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

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

    改成普通的windows路径后:

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

    链接器工作正常。

    【讨论】:

    • 听起来不错,虽然我必须承认我没有这个项目也没有时间来测试这个了。似乎这些典型的愚蠢事情之一可能会导致它:-/
    猜你喜欢
    • 2021-07-13
    • 2012-02-26
    • 2011-06-23
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多