当前位置: 首页 > article >正文

解决GLIBC不兼容问题

问题背景

在交叉编译时,报了GLIBC不兼容的问题。我分析产生这个问题的原因是 ,生成库时使用的GLIBC库比当前使用的交叉编译工具链中的GLIBC库更新,导致无法兼容。

解决方案

解决这个问题的方法是下载更新的交叉编译工具链。
比如报错内容显示,库使用的最新的GLIBC库是2.29版本的,那么我们保证下载的交叉编译工具链条中带的GLIBC库是比它更新的。

确定交叉编译工具链的GLIBC版本

查看版本的方法是搜索交叉编译工具链中的libc.so.6库,右键选中它,查看它的属性,会发现它其实是一个链接,链接到其他库。比如我后面下载的交叉编译工具链中带的库的libc.so.6的属性显示,它指向libc-2.33.so,那么它的版本就是2.33。

交叉编译工具链名字解析

工具链的各个字段的含义解释如下:

  • gcc
    这表明该交叉编译工具链的核心编译器是 GNU Compiler Collection(GCC)。GCC 是一套广泛使用的开源编译器,支持多种编程语言,如 C、C++、Fortran 等,在软件开发领域应用非常普遍。
  • arm
    表示该工具链是专门为 ARM 架构处理器设计的。ARM 架构广泛应用于移动设备、嵌入式系统等领域,具有低功耗、高性能等特点。
  • 10.3-2021.07
    这部分体现了 GCC 编译器的版本信息。其中 10.3 是 GCC 的具体版本号,它代表了编译器的功能特性和性能水平;2021.07 表示该版本工具链的发布时间为 2021 年 7 月。不同版本的 GCC 在功能、性能和兼容性上可能会有所差异。
  • x86_64
    指的是该交叉编译工具链所运行的宿主系统架构。x86_64 是一种 64 位的 x86 架构,常见于台式机、笔记本电脑和服务器等设备。这意味着你可以在基于 x86_64 架构的计算机上使用这个工具链进行编译工作。
  • aarch64
    代表目标系统的架构。aarch64 是 64 位的 ARM 架构,表明使用这个工具链编译出来的程序将运行在采用 64 位 ARM 架构的设备上,比如一些高端的嵌入式设备、智能手机等。
  • none
    说明该工具链在设计上不依赖特定的嵌入式操作系统运行时环境。使用此工具链编译的程序可以在裸机环境(即没有操作系统的硬件平台)上运行,不过在这个名称中结合后面的 linux 来看,更多是表示不依赖除 Linux 内核之外的特定嵌入式运行时环境。
  • linux
    表示编译出来的程序将运行在 Linux 操作系统上。这意味着该工具链会针对 Linux 系统的特性和接口进行优化,生成的可执行文件能够与 Linux 内核和系统库进行交互。
  • gnu
    表示该工具链使用 GNU C 库(glibc)。GNU C 库是 Linux 系统中广泛使用的标准 C 库,它提供了丰富的系统调用和函数接口,使得程序能够方便地与 Linux 内核进行交互,实现各种功能。

下载交叉编译工具链

交叉编译工具链可以从两个地方下载,
一个是linaro
linaro提供的工具链下载地址
一个是ARM
ARM提供的工具链下载地址
但是只有ARM提供的工具链比较新,所以我是从ARM官网下载的。
我使用的芯片是Cortex-A55架构的,宿主机是x86架构,ubuntu系统,所以我下载的工具链是 gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz


http://www.kler.cn/a/610286.html

相关文章:

  • 查看linux系统文件描述符限制
  • abp vnext框架重写volo.abp.openiddict的tokenController登录验证
  • 【MySQL】用户账户、角色、口令、PAM
  • 一文速通Python并行计算:03 Python多线程编程-多线程同步(上)—基于互斥锁、递归锁和信号量
  • vue 封装 Axios菜鸟教程
  • C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤
  • P1464 Function —— 洛谷
  • C++:重载操作符
  • django入门教程之cookie和session【六】
  • Pyecharts入门之绘制地图数据
  • 云端存储新纪元:SAN架构驱动的智能网盘解决方案
  • 高维小样本数据的在线流特征选择
  • LangChain开发(二)LangChain提示词模板Template使用
  • LeetCode Hot 100 - 矩阵 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像、240.搜索二维矩阵II
  • STM32F103_LL库+寄存器学习笔记03 - GPIO设置输入模式,并轮询GPIO的电平状态
  • Day15 -实例 端口扫描工具 WAF识别工具的使用
  • 推荐一个可以自定义github主页的网站
  • WinSCP使用教程:(SFTP、SCP、FTP 和 WebDAV)
  • 【深度学习】扩散模型(Diffusion Model)详解:原理、应用与当前进展
  • 阿波罗Apollo相关配置