一、问题

最近用git克隆项目时出现了如题的报错,一顿操作下来,发现这库还是个系统库,没法更新也不能卸载重装,对比了另一台ubuntu文件的md5发现文件也没有损坏。。。

二、分析

  • 1、使用 ldd -r 指令,查看该文件依赖了哪些动态库,并且存在哪些 undefined symbol 符号
ldd -r /lib/x86_64-linux-gnu/libgnutls.so.30

可以看到未定义的符号挺多,而且报错符号确实来自该动态库

  • 2、使用指令 readelf -s 确认 libgnutls.so.30 里面定义了该符号(函数)
readelf -s /lib/x86_64-linux-gnu/libgnutls.so.30 | grep __gmpz_limbs_write

可以看到动态库里面确实定义了这个全局符号,那问题是什么呢?难道是函数调用不了?

检查前面的过程,可以看到有个比较"离谱"的路径。这里的意思是说 libgnutls.so.30 依赖了另一个动态库 libgmp.so.10,而该动态库来自路径 /disk/sdk/compiler/…,想都不用想,这肯定是不对的呀!

在相同的系统路径下,我们可以找到这个动态库本体正确的位置。那究竟是什么时候链接出错了呢?

  • 3、检查 LD_LIBRARY_PATH 环境变量。(容易混淆的还有另一个环境变量 PATH,可以简单理解为前者是用来为执行程序找动态库的,而后者是用来找执行程序的,两个打配合,我们就可以在任意目录下运行一个其它地方的执行程序了)
echo $LD_LIBRARY_PATH

可以看到路径 /disk/sdk/compiler/… 确认来自该环境变量

通过这么一查,我就想起来了,是我之前配置过 ~/.bashrc,在里面添加过环境变量。注释掉下面两行,重启电脑,问题解决!

三、总结

  • 1、使用指令 ldd -r 检查来源动态库,确认符号所在文件、确认有无异常的链接库来源;

  • 2、确认动态库内是否定义了某个函数符号,可以用指令 readelf -s (其实也可以用 strings 指令);

  • 3、出现异常的链接库来源,多数是由环境变量 LD_LIBRARY_PATH 引入的,检查在哪里配置过该环境变量,修复后重启电脑即可。

undefined symbol: __gmpz_limbs_write 问题分析和解决相关推荐

  1. C++ undefined symbol的问题分析和解决办法

    文章目录 简介 系统环境 问题详细描述 分析方法 解决办法 简介 该篇博客主要记录在C++代码开发过程中,使用多态方式时遇到的undefined symbol的问题的分析和解决过程. 系统环境 1.编 ...

  2. undefined symbol: __gmpz_limbs_write 治疗仙方

    再次遇到, 记下为证 问题: john@ubuntu:~/alina/News_Rec$ sudo apt-get update /usr/lib/apt/methods/http: symbol l ...

  3. undefined symbol: __gmpz_limbs_write

    目录 解决方案 解决方案 想必遇到这个问题的同学跟我一样,已经心态爆炸了,由于强行终止了apt-get upgrade,然后咱的虚拟机就崩了,重启后,上不去图形界面,但是按"ctrl+alt ...

  4. 关于 麒麟系统启动应用报错“undefined symbol: __cxa_throw_bad_array_new_length, version Qt_5“ 的解决方法

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125516818 红胖子(红模仿)的博文大全:开发技术集 ...

  5. Keil MDK5 编译报Undefined symbol __builtin_ffs 的错误的解决方法

    问题描述 __builtin_ffs 的作用,就是求一个32位数值中,从低位开始的1出现的位置,这算是一个内置的函数,所以直接使用,计算会比较的快. RT-Thread 内核代码中,使用这个 函数,作 ...

  6. 转载--解决gedit: symbol lookup error: /home/xxx/libgobject-2.0.so.0: undefined symbol: g_date_copy问题

    操作系统:Ubuntu 16.04 问题描述: 在终端启动gedit命令或者vscode命令报错:gedit: symbol lookup error: /home/chujie/anaconda3/ ...

  7. conda安装bowtie2的报错:undefined symbol

    使用conda安装bowtie2遇到undefined symbol报错 /public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build ...

  8. sslocal 报错undefined symbol: EVP_CIPHER_CTX_cleanup

    sslocal 报错undefined symbol: EVP_CIPHER_CTX_cleanup INFO: loading config from /etc/shadowsocks.json 2 ...

  9. undefined reference to symbol xxxxx和undefined symbol:xxxx错误的原因分析以及解决方法

    Linux下编译程序时,经常会遇到"undefined reference to XXX" 报错,或者运行时出现undefined symbol:xxxx报错. 这里总结一些可能的 ...

最新文章

  1. java实现模拟考试系统,基于jsp的驾照模拟考试系统a-JavaEE实现驾照模拟考试系统a - java项目源码...
  2. 沉浸式小说App获得200万美元投资
  3. 世界种业并购史 国际农民丰收节贸易会起底农化巨头构架
  4. [转]被当做狗和鸡来驱赶的百姓
  5. Memcached学习---(2)Linux Memcached 安装
  6. Flink : Could not resolve substitution to a value: ${akka.stream.materializer}
  7. ASP.NET Core与Dapper和VS 2017使用JWT身份验证WEB API并在Angular2客户端应用程序中使用它
  8. 华为交换机关闭接口命令_华为路由交换机基础命令,看看你会哪些?
  9. 《Java从入门到放弃》JavaSE入门篇:异常
  10. 教程 海湾主机crt_海湾消防主机JB-QT-GST5000火灾报警控制器(联动型)与crt是怎么连接编公式的...
  11. LPSTR、LPCSTR、LPTSTR和LPCTSTR,LPVOID的意义及区别
  12. 谷歌、领英、汇丰、桥水、联合航空、联合利华、雷克萨斯、Expedia、OYO等公司高管变动情况...
  13. Microsoft Word 2007 向程序发送命令时出现问题解决方法
  14. tornado 异步
  15. 将顺序表中非零元素移动到顺序表的前面
  16. 解决浏览器加载缓存js文件不能及时获取服务器更新后js文件问题
  17. 将RSA加密应用在ARM-Linux平台
  18. 串口、COM口、UART口, TTL、RS-232、RS-485的区别
  19. 区块链与能源互联网的碰撞
  20. 原创 | 自学编程,我该如何寻找自学资源?

热门文章

  1. 运行时间分析(时间复杂度分析 )
  2. 设计模式的艺术 行为型模式之备忘录模式
  3. 可怕!关于投资,一个残酷的现实正在上演
  4. ADAudit Plus:保护企业信息安全的强大内部审计解决方案
  5. 【spark 大数据处理技术】 - “Hello world”
  6. Day 14打卡十四天
  7. 【Windows临时文件】临时文件的存放位置
  8. CMake中target_compile_definitions的使用
  9. 快手Java社招面试题解析
  10. 程序员喜欢的5种小姐姐类型