2011-04-07 42 views
0

我有一個來自Android的OpenCV端口的make文件。由於這個項目看起來相當死亡,所以沒有任何更新,最後支持的NDK版本是4b。有了這個NDK版本,所有編譯工作都可以找到,代碼也可以工作。但是,如果我使用更新版本構建它,我會得到以下錯誤。來自NDK 5b的ld.exe無法找到庫

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一起使用,或者指向我尋找問題的方向。

回答

0

對我來說ld.exe找不到路徑下指定的庫,因爲我用的cygwin式路徑格式:

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

鏈接:

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

這個不斷變化的正常Windows路徑之後正常工作。

+0

聽起來不錯,但我必須承認我沒有這個項目,也沒有時間來測試這個。這似乎是這些典型的愚蠢的事情之一,可能會導致它: - / – Pandoro 2012-11-14 21:34:29