gdb: symbol lookup error: /lib64/libguile-2.0.so.22: undefined symbol: GC_gcollect_and_unmap

今天启动GDB遇到了这个问题,查了各种原因,更换了库,仍然无法解决。

查到加入一条环境变量的方法,解决了。

export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH

方法来自https://blog.csdn.net/u013028556/article/details/17092307
可以看出这个是与链接有关,那么我想,如果它链接不上,那其他在/lib64下的库理应也连接不上啊,通过ldd查看gdb依赖的库:这个问题的根源在了下面*的前后,所以这里应该说明是链接的上的。

ldd /usr/bin/gdb
	linux-vdso.so.1 (0x00007ffeb85f5000)
	libreadline.so.7 => /usr/lib64/libreadline.so.7 (0x00007f4eb2906000)
	*********************
	libguile-2.0.so.22 => /usr/lib64/libguile-2.0.so.22 (0x00007f4eb1ac0000)
	*********************
	libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00007f4ead330000)
	libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f4ead0bf000)

那么去查了加载的动态库

ldconfig -v

很显然看到了/lib64(也就是/usr/lib64是加载了的),之后去查了好像是动态库扫描设置的地方

[root@localhost ld.so.conf.d]# pwd
/etc/ld.so.conf.d

[root@localhost ld.so.conf.d]# ls
bind-export-x86_64.conf  kernel-4.18.0-80.el8.x86_64.conf
dyninst-x86_64.conf      libiscsi-x86_64.conf

[root@localhost ld.so.conf.d]# cat *
/usr/lib64//bind9-export/
/usr/lib64/dyninst
    # Placeholder file, no vDSO hwcap entries used in this kernel.
/usr/lib64/iscsi

确实,这里并没有加载/lib64,是加载了它们的子库,但是这部分内容由于我不确定是否如此,之后学习这个文件夹下文件功用后再补上。此外,是否有可能gdb本身就是按照环境变量名称去加载的这个库呢?

这次的问题让人云里雾里的,留为纪念,希望以后我能搞明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值