5

按照http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html的指示,我遇到了这个:

make -j8
...
...
链接CXX共享库../../lib/libopencv_java244.dylib
ld:未知选项:-whole-archive
clang:错误:链接器命令失败,退出代码1(使用-v查看调用)
make[2]: * [lib/libopencv_java244.dylib] 错误 1
​​make[1]: *
[modules/java/CMakeFiles/opencv_java.dir/all] 错误 2
make: *** [all] 错误 2

有什么建议么?

4

4 回答 4

22

安装 OpenCV 最简单的解决方案之一是使用Homebrew

您只需键入:

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

它将自动加载所需的库并构建 opencv。

完成后,您将能够在

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

opencv路径

于 2014-09-08T12:25:32.167 回答
4

我猜你是从源代码构建的。如果是这样,我建议使用 CMake。通过使用 ccmake 启用它,我设法使用 Java 模块构建 OpenCV 2.4.4:

cd OpenCV-2.4.4
mkdir build
cd build
ccmake ..

确保BUILD_opencv_javaON(默认情况下应该打开) OpenCV的Java

完成设置后:

  1. 按配置(c
  2. 按生成(g
  3. 继续往常makemake install

为方便起见,我还上传了为 osx 10.8 上的 x86_64 构建的 Java 包装器:

于 2013-04-02T09:50:10.183 回答
4

我的解决方案是使用 MacPort 安装......它放置了你需要的所有东西,你不用担心配置、构建等等......

只需安装 MacPort,然后运行:“sudo port install opencv +java”

有关更多详细信息,请参阅: http: //ladstatt.blogspot.com.br/2013/04/opencv-on-macosx-with-java-support.html

于 2013-11-14T14:35:03.947 回答
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。有关详细信息,请参阅拉取请求 741,有关最新代码,请参阅 git pull。

于 2013-04-03T05:02:42.870 回答