2013-04-01 7 views
5

Poniższe wskazówki od http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html, używam do this:budynku OpenCV z Java Wsparcie na 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

sugestie?

Odpowiedz

2

Dosłownie miałem ten sam problem! Z pewnym kopania, okazało się, że linker ld ma różne flagi w Unix i OS X. Zatem błąd:

ld: unknown option: -whole-archive 

naprawić, można edytować plik modules/java/CMakeLists.txt użyć flagi OS X. (Szukaj -whole-archive)

oryginalny:

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

Nowość:

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

Idę zobaczyć, czy mogę dostać tych zmian w repo. :)

--Edit--
Mój oryginalny odpowiedź była nieznacznie niewłaściwy (ale częściowo rację!); Zmieniłem powyższą odpowiedź. -force_load działa tylko dla jednego archiwum, a tym samym dla foreach. Jak dobrze, powinien przejść do linkera, a więc do -Wl. Zobacz pull request 741, aby uzyskać szczegółowe informacje i pobrać git, aby uzyskać aktualny kod.

4

Zgaduję, że budujesz ze źródła. Jeśli tak, zalecam używanie CMake. udało mi się zbudować OpenCV 2.4.4 z modułem Java poprzez umożliwienie jej korzystania ccmake:

cd OpenCV-2.4.4 
mkdir build 
cd build 
ccmake .. 

Upewnij BUILD_opencv_java jest ON (powinny być domyślnie) OpenCV java

Po jesteś wykonane z ustawieniami:

  1. naciśnij configure (c)
  2. naciśnij generują (g)
  3. kontynuować ze zwykłymi make, make install

Dla wygody Ja również przesłany opakowanie Java zbudowany dla x86_64 na OSX 10.8:

+0

Mógłbyś połączyć otoki Java dla OpenCV 2.4.11 (wersja 32-bitowa) skompilowane z JDK 1.6? (http://stackoverflow.com/questions/34103709/build-opencv-jdk-6-32-bit-for-mac?noredirect=1#comment55959146_34103709) –

+0

Jak zainicjalizować bibliotekę macierzystą z 2.4.4, widząc, że nie można wywołać System.loadLibrary (Core.NATIVE_LIBRARY_NAME); ? –

23

Jednym z najprostszym rozwiązaniem do zainstalowania OpenCV jest użycie Homebrew.

Wszystko, co trzeba zrobić, to po prostu typ:

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

będzie automatycznie załadować potrzebne bibliotekami i budowania OpenCV.

Kiedy zostanie zrobione, będzie można znaleźć pliku jar w

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

opencv path

+0

Awesome. Dziękuję Ci za to. Zainstalowałem OpenCV również przez homebrew. Chciałem tylko wiedzieć, gdzie znajduje się plik JAR. +1. – rayryeng