按照http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html的说明,我遇到了这个:
让-j8
...
...
链接CXX共享库../../lib/libopencv_java244.dylib
LD:未知的选项:-whole归档
铛:错误:连接命令,退出代码为1(使用-v看不到调用)
make [2]:*[lib/libopencv_java244.dylib]错误1
make [1]:* [modules/java/CMakeFiles/opencv_java.dir/all]错误2
make:***[all]错误2
有什么建议?
Ale*_*der 22
安装OpenCV最简单的解决方案之一就是使用Homebrew.
您需要做的只是键入:
brew tap homebrew/science
brew install opencv --with-java
Run Code Online (Sandbox Code Playgroud)
它将自动加载所需的库并构建opencv.
完成后,您将能够找到一个jar文件
/usr/local/Cellar/opencv/2.4.9/share/OpenCV/java/
Run Code Online (Sandbox Code Playgroud)
我确实遇到了完全相同的问题!经过一番挖掘,我发现链接器 ld 在 Unix 和 OS X 中具有不同的标志。因此出现错误:
ld: unknown option: -whole-archive
Run Code Online (Sandbox Code Playgroud)
要修复此问题,您可以编辑该文件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})
Run Code Online (Sandbox Code Playgroud)
新的:
foreach(_dep ${__deps})
target_link_libraries(${the_module} -Wl,-force_load "${_dep}")
endforeach()
Run Code Online (Sandbox Code Playgroud)
我将看看是否可以将这些更改放入存储库中。:)
--编辑--
我原来的答案略有错误(但部分正确!);我已经改变了上面的答案。-force_load 仅适用于一个存档,因此适用于 foreach。同样,它应该转到链接器,即 -Wl。有关详细信息,请参阅pull request 741,有关最新代码,请参阅 git pull。
归档时间: |
|
查看次数: |
15341 次 |
最近记录: |