ld 链接器找不到 so 库

Posted 嵌入式up笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ld 链接器找不到 so 库相关的知识,希望对你有一定的参考价值。

ld 链接器找不到 so 库

一、问题描述

使用RK1808计算棒开发过程中,编译 demo 程序时遇到报错:

ld 链接器找不到 opencv_imgcodecs 和 opencv_videoio 这两个动态库,导致编译失败

二、问题思考

编译提示缺少这两个库,那我们先找一下我们安装的 opencv 库

pkg-config opencv --libs

结果如下:

然后和 cmake 文件进行对比

报错的两个动态库确实没用,可能的原因是 opevcv 的版本不对,不支持编译 cmake 语句文件的那两个报错的动态库

三、解决方式

解决方法想到有两个:

  • 更换 opencv 版本,安装支持这两个库的版本
  • 目前版本的动态库应该也对其支持,可以换一个动态库试试

我先试试第二种方法,opencv_videoio 是用来读取视频和摄像头,换成 opencv_video,opencv_imgcodecs 图片编码,换成 opencv_photo,重新编译

编译成功,程序执行也没问题,这个方法不是很完美,这个肯定是版本原因,具体要搜索各个版本间的特性,换版本编译

以上是关于ld 链接器找不到 so 库的主要内容,如果未能解决你的问题,请参考以下文章

链接器找不到 Lua 库定义

gcc 链接器找不到库(openNI)

/usr/bin/ld: 找不到共享库

ubuntu 找不到动态链接库

链接器找不到与 Libunbound 的共享对象

动态库链接器/加载器 ld-linux.so.2