【问题标题】:Fail to compile opencv with arm-linux-g++ (cross compilation)使用 arm-linux-g++ 编译 opencv 失败(交叉编译)
【发布时间】:2014-03-14 22:26:07
【问题描述】:

这是我第一次在 stackoverflow 上提问。我会尽可能明确地向您展示这个问题。

这个库在 x86 计算机上运行良好,但是当涉及到交叉编译时(我将这个库安装在 2 个不同的目录中,所以它们都存在),它就是无法通过编译,说类似

"undefined reference to `cvNamedWindow'"

我知道这可能意味着我没有引用这些库,但在 x86 linux 上,只需键入

`pkg-config --libs opencv`

会好的。啊我试过好几种方法都失败了!

目前我无法发布图片,但我会向您展示库文件。

libopencv_calib3d.so
libopencv_contrib.so
libopencv_core.so
libopencv_features2d.so
libopencv_flann.so
libopencv_gpu.so
libopencv_highgui.so
libopencv_imgproc.so
libopencv_legacy.so
libopencv_ml.so
libopencv_nonfree.so
libopencv_objdetect.so
libopencv_photo.so
libopencv_stitching.so
libopencv_superres.so
libopencv_ts.so
libopencv_video.so
libopencv_videostab.so

啊如何引用库?我尝试了很多流行的谷歌搜索结果,但都失败了,所以我需要你的帮助,非常感谢!

【问题讨论】:

  • 所以,在您的 x86 系统上使用nm,您能找到声明该名称的位置吗?然后比较ARM上的同一个文件?

标签: c++ linux opencv cross-compiling


【解决方案1】:

在 Makefile(我假设 pkg-config --libs opencv 所在的位置)中,将 `pkg-config --libs opencv` 替换为

-L -lopencv_calib3d -lopencv_contrib ...

您可能需要更改 -l 选项的顺序,具体取决于哪些库引用了其他库。引用另一个库中的符号的库应该在命令行上位于它之前,因为库是按顺序搜索的。

【讨论】:

    猜你喜欢
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多