我正在为嵌入式设备 (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