【已解决】Ubuntu 20.04 编译OpenCV 动态链接库指向版本不一致导致出错

这篇具有很好参考价值的文章主要介绍了【已解决】Ubuntu 20.04 编译OpenCV 动态链接库指向版本不一致导致出错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:编译OpenCV 4.8.1, 显示出错:

/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_uint32@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_sint32@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_pointer@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_void@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_prep_cif@LIBFFI_BASE_7.0'
/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_call@LIBFFI_BASE_7.0'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/annotation/CMakeFiles/opencv_annotation.dir/build.make:104:bin/opencv_annotation] 错误 1
make[1]: *** [CMakeFiles/Makefile2:3208:apps/annotation/CMakeFiles/opencv_annotation.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....

usr/bin/ld: /home/mengshi/miniconda3/lib/libfmt.so.9.1.0: undefined referenc,ubuntu,linux,运维,conda问题分析:系统的动态链接库和Anaconda的动态链接库指向的版本不同,因此编译出错。

解决方法:先下载一个工具包locate。比find好用。

$ sudo apt install locate
$ sudo updatedb

然后用内置命令ldd查看出现问题的libwayland-client.so.0当中,所依赖的ffi这个库的叫什么。

$ ldd /lib/x86_64-linux-gnu/libwayland-client.so.0 | grep ffi

我们可以发现依赖的这个库叫做libffi.so.7。

usr/bin/ld: /home/mengshi/miniconda3/lib/libfmt.so.9.1.0: undefined referenc,ubuntu,linux,运维,conda之后locate这个文件,发现除了/usr/lib/x86_64-linux-gnu之外,我的Anaconda安装目录/lib下面也有一个libffi.so.7。输入以下命令分别查看两个libffi.so.7链接的动态库文件:

# 查看系统的libffi
$ ll /lib/x86_64-linux-gnu/ | grep ffi
# 查看Anaconda的libffi
$ ll ~/anaconda3/lib/ | grep ffi

结果显示系统的libffi.so.7指向了7.1.0版本,而Anaconda下的指向了8.1.2版本。

usr/bin/ld: /home/mengshi/miniconda3/lib/libfmt.so.9.1.0: undefined referenc,ubuntu,linux,运维,conda

usr/bin/ld: /home/mengshi/miniconda3/lib/libfmt.so.9.1.0: undefined referenc,ubuntu,linux,运维,conda

因此,把anaconda下的libffi.so.7指向系统的7.1.0就可以了。

$ cd (你的Anaconda安装目录)/lib
$ sudo rm libffi.so.7
$ sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7

再次查看Anaconda下的ffi,发现libffi.so.7已经指向了lib/x86_64-linux-gnu/libffi.so.7.1.0。

usr/bin/ld: /home/mengshi/miniconda3/lib/libfmt.so.9.1.0: undefined referenc,ubuntu,linux,运维,conda

再次编译OpenCV,通过。

总结:当编译程序的时候,如果安装了Anaconda,经常会出现动态链接库的依赖指向问题。保证系统和Anaconda的依赖库版本一致,可以避免一些Bug。

ldd这个命令常用来打印或者查看程序运行所需的共享库(访问共享对象依赖关系),可以解决程序因缺少某个库文件而不能运行的一些问题。

参考:【已解决】/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0`文章来源地址https://www.toymoban.com/news/detail-767382.html

到了这里,关于【已解决】Ubuntu 20.04 编译OpenCV 动态链接库指向版本不一致导致出错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 解决PCL和OpenCV中flann库冲突的问题(Ubuntu20.04+VSCode)

    做视觉处理,尤其是三维视觉和点云处理等,基本都离不开这俩大库,以前要么单独用OpenCV做二维,要么纯用PCL做点云后处理。因为准备把学习期间的代码整合起来,所以需要同时使用两个库,结果发现 flann库冲突 的问题🤪 查阅了一下网上的方案,基本有几种方案 1.建议改

    2024年02月15日
    浏览(9)
  • 【carla】ubuntu20.04 编译carla-ros-bridge 安装过程、报错及其解决方法

    下载后进行catkin_make会报错3个错误 Create a catkin workspace: Clone the ROS Bridge repository and submodules: Set up the ROS environment according to the ROS version you have installed: Install the required ros-dependencies: 安装rosdepc,然后运行: 7.创建虚拟环境 8.安装pip依赖 方法1:在conda环境中安装empy: conda instal

    2024年02月11日
    浏览(15)
  • 【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造

    【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造

    学完SLAM十四讲 心血来潮想跑一下ORB-SLAM2的代码,纯新手小白,自己的踩坑经历进行整理: 本文章主要对ORB-SLAM2进行编译运行。以及自己构建数据集。 源码github地址:https://github.com/raulmur/ORB_SLAM2 终端克隆代码: 查看源代码,其重要的代码库仅为三个文件夹: Example include s

    2024年03月13日
    浏览(13)
  • 下载安装Ubuntu 20.04详细教程(内附安装22.04版本教程链接)

    下载安装Ubuntu 20.04详细教程(内附安装22.04版本教程链接)

    🌈 个人主页:python老鸟的博客 🔆 免费专栏:Python基础教程 ❤️  分享网站: 《Python自学网》👉👉基础入门到逐步深入  |  适合新手入门到精通  | python全栈体系课程   🙏 如果觉得博主文章对你有所帮助的话,还望大家多多支持呀!关注  |  点赞  |  收藏  |  评论

    2024年01月21日
    浏览(24)
  • ubuntu20.04 编译安装运行emqx

    ubuntu20.04 编译安装运行emqx

    Erlang/OTP OTP 24 或 25 版本 GCC 4.8 或更高版本 Git make openssl-devel libcurl-devel

    2024年02月11日
    浏览(18)
  • Ubuntu20.04安装OpenCV

    Ubuntu20.04安装OpenCV

    开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。 OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强

    2023年04月09日
    浏览(16)
  • Ubuntu20.04安装fortran编译器

    Ubuntu20.04安装fortran编译器

    1.打开终端:你可以通过按下 Ctrl + Alt + T 键组合来打开终端窗口。 2.更新包列表:运行以下命令以确保你的包列表是最新的:  sudo apt update 3.安装Fortran编译器:运行以下命令来安装GNU Fortran编译器: sudo apt install gfortran 4.验证安装:安装完成后,你可以运行以下命令来验证F

    2024年02月03日
    浏览(7)
  • ubuntu20.04搭建arm交叉编译环境

    ubuntu20.04搭建arm交叉编译环境

    源码下载地址:Downloads | GNU-A Downloads – Arm Developer 要根据目标系统选择编译器版本,我的主板: aarch64bit体系结构(arm 64bit),linux内核GNU操作系统=GNU/Linux操作系统(简称linux) 大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存

    2023年04月24日
    浏览(12)
  • Ubuntu 20.04 X86成功编译运行wayland、wayland-protocols、weston,亲测有效,踩了很多坑,完美解决。

    Ubuntu 20.04 X86成功编译运行wayland、wayland-protocols、weston,亲测有效,踩了很多坑,完美解决。

    编译前期准备: 1、更换国内源: #添加阿里源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ foc

    2024年02月11日
    浏览(50)
  • 在 Ubuntu 20.04 上安装 OpenCV

    在 Ubuntu 20.04 上安装 OpenCV

    OpenCV 在 Ubuntu 20.04 软件源中可用。想要安装它,运行: 上面的命令将会安装所有必要的软件包,来运行 OpenCV: 通过导入 cv2 模块,并且打印 OpenCV 版本来验证安装结果: 输出: 1.安装构建工具和所有的依赖软件包: 2.克隆所有的OpenCV 和 OpenCV contrib 源 3.下载完成,创建一个临

    2024年01月23日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包