1

我正在为嵌入式设备 (Moxa UC-8100) 交叉编译应用程序,并且遇到了 GLIBC 的版本问题。

我安装了 Debian 9(按照嵌入式设备供应商的指示)并使用 arm-linux-gnueabihf 工具链。在设备上运行我的构建时,它说

moxa@Moxa:~$ ./fabs-uc8100 -h
./fabs-uc8100: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.17' not found (required by ./fabs-uc8100)
./fabs-uc8100: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.16' not found (required by ./fabs-uc8100)

当我ldd --version在设备上运行时,我可以看到它的版本为 2.13:

moxa@Moxa:~$ ldd --version
ldd (Debian EGLIBC 2.13-38+deb7u8) 2.13

所以,问题很清楚(我的程序是用 2.16 构建的,但我有 2.13 可用),但我该如何解决这个问题?

更新我在 Debian 9 64 位 VM 上使用标准 Debian 软件包(包括一些 Moxa 软件包)安装了交叉编译工具链:

添加deb http://debian.moxa.com/debian stretch main contrib non-free/etc/apt/sources.list.d/moxa.sources.list,然后:

user@Linux:~$ apt-get install moxa-archive-keyring
user@Linux:~$ dpkg --add-architecture armhf
user@Linux:~$ apt-get install crossbuild-essential-armhf
user@Linux:~$ apt-get install libssl-dev:armhf
4

2 回答 2

0

我该如何解决?

您需要在构建主机上安装 EGLIBC-2.13 并配置您的交叉编译器以使用它(显然它当前正在使用 GLIBC-2.17或更高版本)。

由于您没有提供有关交叉编译器来源或构建设置的详细信息,因此您不能指望有人能够准确地告诉您当前设置有什么问题。

于 2021-09-03T01:00:00.600 回答
0

根据在 Linaro 邮件列表中找到的这个线程,您可能有机会在这里获得gcc -linaro-arm-linux-gnueabi- 2012.03-20120326_linux.tar.bz2 :

wget http://releases.linaro.org/archive/12.03/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux.tar.bz2
tar jxf gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux.tar.bz2

gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc --version
arm-linux-gnueabi-gcc (crosstool-NG linaro-1.13.1-2012.03-20120326 - Linaro GCC 2012.03) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

strings gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/arm-linux-gnueabi/libc/lib/arm-linux-gnueabi/libc.so.6 | grep 2.13
GLIBC_2.13
GNU C Library (Ubuntu EGLIBC 2.13-20ubuntu5) stable release version 2.13, by Roland McGrath et al.
2.13
NPTL 2.13
glibc 2.13
libc-2.13.so

如果您使用的是 Linux x86_64 系统,则可能需要添加执行 x86 二进制文件所需的包,以防它们尚未安装 - 我使用的是 Ubuntu 20.04.3 LTS。

于 2021-09-03T01:40:47.480 回答