x210开发板升级glibc-2.10到glibc-2.18版本的解决方案

一、问题的出现

最近用QT5.12.04的版本开发了一个qmqtt客户端,移值到开发板上运行时出现如下报错:

./mqttsubscriptions: /lib/libc.so.6: version `GLIBC_2.16’ not found (required by /QT5.12.4_ARM/lib/libQt5Core.so.5)
./mqttsubscriptions: /lib/libc.so.6: version `GLIBC_2.17’ not found (required by /QT5.12.4_ARM/lib/libQt5Core.so.5)

为什么会报错:因为这是我现在要运行的可执行文件使用到的库(libQt5Core.so.5),要求glibc的版本在2.17版本以上,而我现在的x210开发板中glibc版本是低于2.17的,所以报错了。好的,使用strings命令查看一下现在glibc的版本到底是多少?

使用命令: strings /lib/libc.so.6 | grep GLIBC_

[root@CRG-X210 ]# strings /lib/libc.so.6 | grep GLIBC_
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_PRIVATE
[root@CRG-X210 ]# 

以上显示得知最高支2.10版本

二、问题的解决

解决思路1:使用低版本的QT重新编译可执行文件 (在编译过程中可能又会遇到不同的问题,放弃!)

解决思路2:下载glibc2.17版本以上的源码,交叉编译后移植到x210中使用(过程太复杂,可能又会踩到坑,放弃)

解决思路3:使用现成的,现成的?哪里有?莫急,下面慢慢道来!

1、找到现成的glibc2.17以上的版本

其实这个glibc2.17以上的版本就在交叉编译可执行文件的工具链里面,那么问题来了,我的Ubuntu中装了N多个版本的交叉编译工具链,我怎么知道在哪个叉编译工具链去找呢?简单,还是使用strings命令查看报错的库文件(libQt5Core.so.5)是用哪个交叉编译工具链编译出来的。

使用命令:strings /QT5.12.4_ARM/lib/libQt5Core.so.5 | grep GCC

[root@CRG-X210 ]# strings /QT5.12.4_ARM/lib/libQt5Core.so.5 | grep GCC
GCC_3.0
GCC_3.4
GCC_3.5
Qt 5.12.4 (arm-little_endian-ilp32-eabi shared (dynamic) release build; by GCC 4.8.3 20140320 (prerelease))
GCC: (Sourcery CodeBench Lite 2014.05-29) 4.8.3 20140320 (prerelease)
[root@CRG-X210 ]# 

以上显示这个库文件(libQt5Core.so.5)是用名为"2014.05-29",版本为"4.8.3"的交叉编译工具链编译出来的。

2、 使用现成的glibc2.17以上的版本移值到x210开发板上

经过上一步已找到相对应的交叉工具链,现在进入这个交叉工具链libc.so.6文件所在的目录,我的目录路是:/usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/libc/lib,当然,你的目录路径可能和我的是不一样的哦。ls 查看下。

使用命令:ls

root@chenrg-virtual-machine:/usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/libc/lib# ls
ld-2.18.so               libc-2.18.so      libdl-2.18.so   libm.so.6              libnss_db.so.2         libnss_hesiod.so.2      libpthread-2.18.so  libSegFault.so
ld-linux.so.3            libcidn-2.18.so   libdl.so.2      libnsl-2.18.so         libnss_dns-2.18.so     libnss_nis-2.18.so      libpthread.so.0     libthread_db-1.0.so
libanl-2.18.so           libcidn.so.1      libgcc_s.so     libnsl.so.1            libnss_dns.so.2        libnss_nisplus-2.18.so  libresolv-2.18.so   libthread_db.so.1
libanl.so.1              libcrypt-2.18.so  libgcc_s.so.1   libnss_compat-2.18.so  libnss_files-2.18.so   libnss_nisplus.so.2     libresolv.so.2      libutil-2.18.so
libBrokenLocale-2.18.so  libcrypt.so.1     libm-2.18.so    libnss_compat.so.2     libnss_files.so.2      libnss_nis.so.2         librt-2.18.so       libutil.so.1
libBrokenLocale.so.1     libc.so.6         libmemusage.so  libnss_db-2.18.so      libnss_hesiod-2.18.so  libpcprofile.so         librt.so.1

以上显示的库文件中,其中有一个文件是libc.so.6,使用strings命令查看一下libc.so.6这个文件最高支持glibc版本是多少?

使用命令:strings libc.so.6 | grep GLIBC_

root@chenrg-virtual-machine:/usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/libc/lib# strings libc.so.6 | grep GLIBC_
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
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_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_PRIVATE

以上显示这个libc.so.6最高支持2.18版本。好了,就是它。将这个文件夹中的所有文件强行复制到开发板lib目录下。注意:先备份lib文件夹再进复制,预防出错!

使用命令:cp * /home/chenrg/windows-share/SI_source/rootfs/rootfs/lib -rf

重新执行可执文件…

OK,不再报错了,可执行文件完美的运行了!!!

因我使用的是nfs文件系统,所以可以直接复制到开发板上。如果你没有使用nfs文件系统,用别的方式也可以的。另外复制之前要先备份原有lib文件夹,一定要先备份、备份、备份。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据引用,用户想要安装正点原子Linux开发板使用的gcc-linaro-4.9.4 2017.01-x86_64_arm-linux-gnueabihf.tar.xz交叉编译工具链。然而,考虑到学校的九鼎X210开发板使用的是三星S5PV210芯片,用户担心安装新的交叉编译工具链可能会出现问题。最终,用户决定不安装新的交叉编译工具链。 在引用中,用户应用chmod命令为imxdownload文件添加了777权限。这意味着该文件现在具有读、写和执行权限。 另外,在引用中,用户在命令行中使用了ls /dev/sd* -l命令来列出/dev/sd开头的设备。这样做可以查看与sd相关的设备及其详细信息。 综上所述,用户在正点原子LINUX开发板上进行了一些操作,包括对imxdownload文件添加了777权限和查看了与sd相关的设备信息。然而,关于正点原子LINUX开发板下载Gcc的具体过程,引用内容中并没有提到。因此,无法给出相关的答案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [S5PV210交叉编译器的安装](https://download.csdn.net/download/weixin_38666300/14052171)[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: 50%"] - *2* *3* [正点原子 linux 开发板汇编点灯。](https://blog.csdn.net/weixin_35179649/article/details/116963437)[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: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值