2013-04-01 326 views
5

http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html下面的指令,我遇到了這一點:OpenCV的建設與Java支持在Mac OS X(64位)

make -j8
...
...
Linking CXX shared library ../../lib/libopencv_java244.dylib
ld: unknown option: -whole-archive
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: * [lib/libopencv_java244.dylib] Error 1
make[1]: *
[modules/java/CMakeFiles/opencv_java.dir/all] Error 2
make: *** [all] Error 2

有什麼建議?

回答

2

我的確有同樣的問題!隨着一些挖,我發現,連接器ld在Unix和OS X.不同的標記因此錯誤:

ld: unknown option: -whole-archive 

要解決,您可以編輯該文件modules/java/CMakeLists.txt使用OS X的標誌。 (搜索-whole-archive

原文:

target_link_libraries(${the_module} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive ${__extradeps} ${OPENCV_LINKER_LIBS}) 

新:

foreach(_dep ${__deps}) 
    target_link_libraries(${the_module} -Wl,-force_load "${_dep}") 
endforeach() 

我要看看我是否能得到這些變成回購。 :)

- 編輯 -
我原來的答覆是稍有不當(但有一定道理!);我改變了上面的答案。 -force_load只適用於一個檔案,因此是foreach。同樣,它應該去鏈接器,因此-Wl。有關詳細信息,請參見pull request 741,並查看最新的代碼。

4

我猜你是從源頭上構建的。如果是這樣,我推薦使用CMake。 我用ccmake使其設法建立的OpenCV 2.4.4與Java模塊:

cd OpenCV-2.4.4 
mkdir build 
cd build 
ccmake .. 

確保BUILD_opencv_javaON(應該是默認值) OpenCV java

後你與設置完成:

  1. 按配置(c
  2. 按生成(g
  3. 繼續與通常的makemake install

爲方便起見,我還上傳了x86_64的內置Java包裝上OSX 10.8:

+0

你能鏈接以OpenCV的2.4.11(32位版本)的Java包裝與JDK編譯1.6? (http://stackoverflow.com/questions/34103709/build-opencv-jdk-6-32-bit-for-mac?noredirect=1#comment55959146_34103709) –

+0

如何用2.4.4初始化本地庫看到你無法調用System.loadLibrary(Core.NATIVE_LIBRARY_NAME); ? –

23

一到安裝OpenCV是使用Homebrew最簡單的解決方案。

所有你需要做的僅僅是類型:

brew tap homebrew/science 
brew install opencv --with-java 

它會自動加載需要的庫,並建立OpenCV的。

什麼時候會做,你將能夠找到一個jar文件中

/usr/local/Cellar/opencv/2.4.9/share/OpenCV/java/ 

opencv path

+0

太棒了。這次真是萬分感謝。我也通過自制軟件安裝了OpenCV。我只是想知道JAR文件的位置。 +1。 – rayryeng