在Ubuntu上链接OpenCV 2.3.1

时间:2012-02-06 07:24:04

标签: c++ opencv linker

我是OpenCV的新手,我遇到了链接问题。

我正在使用Ubuntu 11.10,根据this指南安装了OpenCV 2.3.1:

我正在使用它构建许多小应用程序,它看起来很好。 通常,我正在使用pkg-config --libs --cflags opencv构建。

现在,我正在尝试构建一些其他人编写的框架,它编译没有任何问题,但我无法链接它:有一长串的“未解决的参考...”(其中数以千计) )。找不到与opencv_core相关的所有符号。

我试图在没有预编译头支持的情况下重新编译OpenCV,没有帮助。当然。 :(

test_opencv_core应用程序运行正常,但opencv_rand失败。我认为它通常说opencv_core是正确的,但是当我需要它时它仍然不起作用......

你可以试着给我一些提示吗?我迷失了。

提前谢谢你, 大卫

更新: 解决。

gcc 4.6.1要求在打包到共享库之前,libs和source将在命令行中显示。为什么?不知道。这个愚蠢的错误花了24小时:(

更新: 可以理解的。 来自ld手册页:

  

链接器将仅在存档位置搜索一次存档   在命令行中指定。如果存档定义了符号   在归档之前出现的某个对象中未定义   在命令行上,链接器将包含相应的文件   来自档案馆。但是,出现的对象中存在未定义的符号   稍后在命令行上不会导致链接器搜索   再次存档。

     

请参阅 - (用于强制链接器搜索存档的方法的选项)   多次。

就是这样。

1 个答案:

答案 0 :(得分:1)

gcc 4.6.1要求在共享库的路径之前,libs和源将出现在命令行中。我不知道为什么。

<强>更新: 可以理解的。 来自ld手册页:

  

链接器将仅在存档位置搜索一次存档   在命令行中指定。如果存档定义了符号   在归档之前出现的某个对象中未定义   在命令行上,链接器将包含相应的文件   来自档案馆。但是,出现的对象中存在未定义的符号   稍后在命令行上不会导致链接器搜索   再次存档。

     

请参阅 - (用于强制链接器搜索存档的方法的选项)   多次。

就是这样。