2013-04-01 17 views
5

seguendo le indicazioni da http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html, Sono in esecuzione in questo:Costruire OpenCV con supporto Java su Mac OS X (64-bit)

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

Qualche suggerimento?

risposta

2

Ho avuto letteralmente lo stesso identico problema! Con un po 'di scavo, ho scoperto che il linker ld ha diverse bandiere in Unix e OS X. In questo modo l'errore:

ld: unknown option: -whole-archive 

da risolvere, è possibile modificare il file modules/java/CMakeLists.txt di utilizzare le bandiere OS X.. (Ricerca di -whole-archive)

originale:

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

Nuovo:

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

Vado a vedere se riesco a ottenere queste modifiche nel pronti contro termine. :)

--Edit--
La mia risposta originale era leggermente sbagliato (ma in parte a destra!); Ho cambiato la risposta sopra. -force_load funziona solo per un archivio, quindi il foreach. Pure, dovrebbe andare al linker, quindi il -Wl. Vedi pull request 741 per dettagli e git pull per il codice aggiornato.

4

Immagino che tu stia costruendo dalla fonte. Se è così, ti consiglio di usare CMake. Sono riuscito a costruire OpenCV 2.4.4 con il modulo Java consentendo utilizzando ccmake:

cd OpenCV-2.4.4 
mkdir build 
cd build 
ccmake .. 

Assicurarsi BUILD_opencv_java è ON (dovrebbe essere attiva per impostazione predefinita) OpenCV java

Dopo sei fatto con le impostazioni:

  1. stampa configure (c)
  2. stampa generano (g)
  3. continuare con la solita make, make install

Per comodità ho anche caricato il wrapper Java costruito per x86_64 su OSX 10.8:

+0

Potrebbe collegare il wrapper Java per OpenCV 2.4.11 (versione a 32 bit) compilata con JDK 1.6? (http://stackoverflow.com/questions/34103709/build-opencv-jdk-6-32-bit-for-mac?noredirect=1#comment55959146_34103709) –

+0

Come inizializzare la libreria nativa con 2.4.4 visto che tu impossibile chiamare System.loadLibrary (Core.NATIVE_LIBRARY_NAME); ? –

23

Una delle soluzioni più semplice per installare OpenCV è quello di utilizzare Homebrew.

Tutto ciò che devi fare è solo tipo:

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

Sarà automaticamente caricare librerie necessarie e costruire OpenCV.

Quando sarà fatto, si sarà in grado di trovare un file jar in

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

opencv path

+0

Fantastico. Grazie per questo. Ho installato OpenCV anche via homebrew. Volevo solo sapere dov'era il file JAR. +1. – rayryeng