/lib/libncurses.so: undefined reference to `__fdelt_chk@GLIBC_2.15' collect2: ld

在自己的主机上开发的程序移植到其他机器上是一件很烦人的事情,会出现各种不曾在自己机器上出现的问题,昨天移植了一个程序,make的时候报错了:

/lib/libncurses.so: undefined reference to `__fdelt_chk@GLIBC_2.15' collect2: ld

一开始没有理解给出错误的信息,搜索了后才知道是符号表中__fdelt_chk编译的时候使用的是GLIBC_2.15,即2.15版本的GLIBC,为了验证一下,执行

objdump -T lib/libncurses.so.5 |grep '__fdelt_chk'

输出:00000000      DF *UND*    00000000  GLIBC_2.15  __fdelt_chk

__fdelt_chk在libncurses.so.5的符号表里,看一下本机支持的GLIBC版本,执行

strings /lib/libc.so.6 |grep GLIBC_ 

输出:

......
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_PRIVATE
再到移植的机器上看一下执行结果:

......
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
最高只支持到2.12,所以此问题的原因是当前运行系统Glibc版本低于编译环境Glibc版本造成Glibc版造成的。

方法一,

通过在调用fdelt_chk的源代码中加入__asm__(".symver fdelt_chk,fdelt_chk@GLIBC_2.2.5");

此处2.2.5是系统支持fdelt_chk的最低版本,通过执行nm /usr/lib/libc.so.6 |grep "__fdelt_chk"得到,不过我的系统中没有显示出其他低版本。由于需要在源代码中加,而ncurses动态库不是自己编译生成的,没有源文件改,所以此方法不适用。

方法二,

用静态库的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在运行MySQL时遇到"./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory"这个错误时,它提示你缺少libncurses.so.5这个共享库文件。你可以按照以下方法解决这个问题。首先,你可以通过安装相应的软件包来解决这个问题。具体方法是使用适合你的Linux发行版的包管理器,如apt或yum,安装ncurses库。例如,在Debian或Ubuntu上,你可以运行以下命令来安装ncurses库: sudo apt-get install libncurses5 如果你的系统没有相应的软件包,或者你无法使用包管理器,你可以手动安装libncurses.so.5库。你可以在互联网上搜索并下载libncurses.so.5库文件,然后将其放置在适当的目录中,例如/usr/lib。 另外,你还可以尝试创建一个符号链接来解决这个问题。具体方法是使用以下命令将libncurses.so.5链接到已经存在的库文件libncurses.so.6: sudo ln -s /usr/lib/libncurses.so.6 /usr/lib/libncurses.so.5 这样做的话,系统会将libncurses.so.5的请求重定向到libncurses.so.6,从而解决缺少库文件的问题。 希望这些方法可以帮助你解决"./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory"这个错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No suc](https://blog.csdn.net/zwk_sys/article/details/125818187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file](https://blog.csdn.net/z13615480737/article/details/126817324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [error while loading shared libraries: libstdc++.so.6:cannot open shared object file:](https://download.csdn.net/download/weixin_38719719/13698954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值