undefined symbol: __gmpz_limbs_write 问题分析和解决
一、问题
最近用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 问题分析和解决相关推荐
- C++ undefined symbol的问题分析和解决办法
文章目录 简介 系统环境 问题详细描述 分析方法 解决办法 简介 该篇博客主要记录在C++代码开发过程中,使用多态方式时遇到的undefined symbol的问题的分析和解决过程. 系统环境 1.编 ...
- undefined symbol: __gmpz_limbs_write 治疗仙方
再次遇到, 记下为证 问题: john@ubuntu:~/alina/News_Rec$ sudo apt-get update /usr/lib/apt/methods/http: symbol l ...
- undefined symbol: __gmpz_limbs_write
目录 解决方案 解决方案 想必遇到这个问题的同学跟我一样,已经心态爆炸了,由于强行终止了apt-get upgrade,然后咱的虚拟机就崩了,重启后,上不去图形界面,但是按"ctrl+alt ...
- 关于 麒麟系统启动应用报错“undefined symbol: __cxa_throw_bad_array_new_length, version Qt_5“ 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/125516818 红胖子(红模仿)的博文大全:开发技术集 ...
- Keil MDK5 编译报Undefined symbol __builtin_ffs 的错误的解决方法
问题描述 __builtin_ffs 的作用,就是求一个32位数值中,从低位开始的1出现的位置,这算是一个内置的函数,所以直接使用,计算会比较的快. RT-Thread 内核代码中,使用这个 函数,作 ...
- 转载--解决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/ ...
- conda安装bowtie2的报错:undefined symbol
使用conda安装bowtie2遇到undefined symbol报错 /public/home/xuzhougeng/miniconda3/envs/bsseq/bin/bowtie2-build ...
- sslocal 报错undefined symbol: EVP_CIPHER_CTX_cleanup
sslocal 报错undefined symbol: EVP_CIPHER_CTX_cleanup INFO: loading config from /etc/shadowsocks.json 2 ...
- undefined reference to symbol xxxxx和undefined symbol:xxxx错误的原因分析以及解决方法
Linux下编译程序时,经常会遇到"undefined reference to XXX" 报错,或者运行时出现undefined symbol:xxxx报错. 这里总结一些可能的 ...
最新文章
- java实现模拟考试系统,基于jsp的驾照模拟考试系统a-JavaEE实现驾照模拟考试系统a - java项目源码...
- 沉浸式小说App获得200万美元投资
- 世界种业并购史 国际农民丰收节贸易会起底农化巨头构架
- [转]被当做狗和鸡来驱赶的百姓
- Memcached学习---(2)Linux Memcached 安装
- Flink : Could not resolve substitution to a value: ${akka.stream.materializer}
- ASP.NET Core与Dapper和VS 2017使用JWT身份验证WEB API并在Angular2客户端应用程序中使用它
- 华为交换机关闭接口命令_华为路由交换机基础命令,看看你会哪些?
- 《Java从入门到放弃》JavaSE入门篇:异常
- 教程 海湾主机crt_海湾消防主机JB-QT-GST5000火灾报警控制器(联动型)与crt是怎么连接编公式的...
- LPSTR、LPCSTR、LPTSTR和LPCTSTR,LPVOID的意义及区别
- 谷歌、领英、汇丰、桥水、联合航空、联合利华、雷克萨斯、Expedia、OYO等公司高管变动情况...
- Microsoft Word 2007 向程序发送命令时出现问题解决方法
- tornado 异步
- 将顺序表中非零元素移动到顺序表的前面
- 解决浏览器加载缓存js文件不能及时获取服务器更新后js文件问题
- 将RSA加密应用在ARM-Linux平台
- 串口、COM口、UART口, TTL、RS-232、RS-485的区别
- 区块链与能源互联网的碰撞
- 原创 | 自学编程,我该如何寻找自学资源?