【已解决】/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0`

2023-10-18 21:50

本文主要是介绍【已解决】/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0`,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1 问题背景
  • 2 问题探索
  • 3 问题解决
  • 4 告别Bug

1 问题背景

环境:

  • Ubuntu20.04
  • ROS noetic
  • Anaconda

现象:编译一个ROSRviz插件报错:

/usr/bin/ld: /lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to ‘uuid_generate@UUID_1.0’

在这里插入图片描述

2 问题探索

下载一个辅助工具locate

sudo apt install locate
sudo updatedb

locate命令用于搜索和定位文件,且相比find命令搜索速度更快,同时也支持在搜索文件时使用正则表达式。

另一个有用的内置命令是ldd,它用来打印或者查看程序运行所需的共享库(访问共享对象依赖关系),常用来解决程序因缺少某个库文件而不能运行的一些问题。而本文遇到的问题正是库的链接问题,因此需要用到ldd

接着按以下思路探索:

  1. 报错信息指出是动态链接库libapr-1.so.0未定义对uuid的引用,因此查看该库对uuid这个依赖包的位置信息

    ldd /usr/lib/x86_64-linux-gnu/libapr-1.so.0 | grep uuid
    

    得到

    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fdfdd2f1000)
    
  2. 定位系统中的库文件

    locate libuuid.so.1
    

    得到

    /home/winter/Project/anaconda3/lib/libuuid.so.1
    /snap/core/14447/lib/x86_64-linux-gnu/libuuid.so.1
    /snap/core/14784/lib/x86_64-linux-gnu/libuuid.so.1
    /snap/core18/2697/lib/x86_64-linux-gnu/libuuid.so.1
    /snap/core18/2708/lib/x86_64-linux-gnu/libuuid.so.1
    /snap/core20/1822/usr/lib/x86_64-linux-gnu/libuuid.so.1
    /snap/core20/1828/usr/lib/x86_64-linux-gnu/libuuid.so.1
    /usr/lib/x86_64-linux-gnu/libuuid.so.1
    

    关键点在于:系统中安装了Anaconda,因此系统调用库文件时其实调用了/home/winter/Project/anaconda3/lib/libuuid.so.1路径下的库

  3. 分别查看这两种库使用的版本

    系统版本

    ll /lib/x86_64-linux-gnu/ | grep uuid
    -rw-r--r--   1 root root     47314 2月   7  2022 libuuid.a
    lrwxrwxrwx   1 root root        38 2月   7  2022 libuuid.so -> /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    lrwxrwxrwx   1 root root        16 2月   7  2022 libuuid.so.1 -> libuuid.so.1.3.0
    -rw-r--r--   1 root root     30936 2月   7  2022 libuuid.so.1.3.0
    

    Anaconda版本

    ll Project/anaconda3/lib | grep uuid
    -rw-rw-r--  2 winter winter     29830 10月  6  2021 libuuid.a
    lrwxrwxrwx  1 winter winter        16 4月  10  2022 libuuid.so -> libuuid.so.1.0.0*
    lrwxrwxrwx  1 winter winter        16 4月  10  2022 libuuid.so.1 -> libuuid.so.1.0.0*
    -rwxrwxr-x  2 winter winter     22480 10月  6  2021 libuuid.so.1.0.0*
    

    可以看到系统版本中libuuid.so.1实际指向1.3.0版本,而Anaconda版本中libuuid.so.1实际指向1.0.0版本,版本的差异导致引用的未定义

3 问题解决

将Anaconda版本中libuuid.so.1指向系统版本1.3.0即可

rm Project/anaconda3/lib/libuuid.so.1
sudo ln -s /lib/x86_64-linux-gnu/libuuid.so.1 Project/anaconda3/lib/libuuid.so.1

检查软链接情况

ll Project/anaconda3/lib | grep uuid
-rw-rw-r--  2 winter winter     29830 10月  6  2021 libuuid.a
lrwxrwxrwx  1 winter winter        16 4月  10  2022 libuuid.so -> libuuid.so.1.0.0*
lrwxrwxrwx  1 root   root          34 3月  21 12:25 libuuid.so.1 -> /lib/x86_64-linux-gnu/libuuid.so.1
-rwxrwxr-x  2 winter winter     22480 10月  6  2021 libuuid.so.1.0.0*

更改成功,重新编译

在这里插入图片描述

4 告别Bug

本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

这篇关于【已解决】/lib/x86_64-linux-gnu/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0`的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/235334

相关文章

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Idea插件MybatisX失效的问题解决

《Idea插件MybatisX失效的问题解决》:本文主要介绍Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、重启idea或者卸载重装MyBATis插件(无需多言)二、检查.XML文件与.Java(该文件后缀Idea可能会隐藏