Linux aarch64的glibc版本

Linux aarch64的glibc版本,linux,ubuntu,glibc,libc,Linux,Ubuntu,Glibc,Libc,我正在我的x86 Ubuntu Bionic系统上交叉编译aarch64的应用程序,我遇到了glibc版本不匹配的问题。我的交叉编译工具链使用的是v2.27,而运行应用程序的系统使用的是v2.24。我想这可能是因为我的工具链版本太高,所以我决定降级 在删除所有以前的交叉编译安装后,我安装了gcc-4.8-aarch64-linux-gnu(因为我已经在不同的主机系统上成功地用这个版本交叉编译了应用程序),认为它会将aarch64版本的glibc安装到/usr/aarch64-linux-gnu/

我正在我的
x86 Ubuntu Bionic
系统上交叉编译
aarch64
的应用程序,我遇到了
glibc
版本不匹配的问题。我的交叉编译工具链使用的是v2.27,而运行应用程序的系统使用的是v2.24。我想这可能是因为我的工具链版本太高,所以我决定降级

在删除所有以前的交叉编译安装后,我安装了
gcc-4.8-aarch64-linux-gnu
(因为我已经在不同的主机系统上成功地用这个版本交叉编译了应用程序),认为它会将
aarch64
版本的
glibc
安装到
/usr/aarch64-linux-gnu/lib/
。不过,还是安装了v2.27(在安装新的交叉编译工具链之前,我验证了该目录不存在)

所以我的问题有两个:

  • 当安装
    gcc-4.8-aarch64-linux-gnu
    时,是什么决定了我的系统上安装了
    glibc
    的哪个
    aarch64
    版本?它是否直接绑定到我自己系统的
    x86
    版本的
    glibc
  • 是否有正确的方法在我的系统上安装
    aarch64
    版本的
    glibc
    v2.24(或更低版本)

  • 问题的答案完全取决于您使用的交叉工具链。有很多。看起来您安装的系统有一个bug,系统头泄漏到工具链sysroot中。否则,glibc版本不匹配根本就不是问题。我尝试使用的交叉工具链是通过
    sudo apt install gcc-aarch64-linux-gcc
    获得的。然而,当我下载这一个时,它工作了,因为它包括
    glibc
    v2.19。我无法解释为什么通过
    sudo apt get安装总是安装v2.27…所以我环顾四周,提出了一个假设:我看到
    gcc-aarch64-linux-gnu
    依赖于
    libc6-dev-arm64-cross
    。看一看,对于
    Bionic
    ,它默认为v2.27。所以本质上,它是作为依赖项安装的,并且使用最新版本。