Link 具有特定的 GLIBC 版本

Link with specific GLIBC version

我正在使用带有 crosscompiller 的远程主机 pc 来构建 cpp 代码并将其部署到 BeagleBone Black。我的问题是,自从我尝试 运行 我的代码 <time.h> 函数后,我收到一条消息:

/lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.17' not found (required by /home/debian/app)

所以我使用 ldd --version 检查了我在 BBB 上获得的版本并得到:

ldd (Debian EGLIBC 2.13-38+deb7u8) 2.13
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.
Written by Roland McGrath and Ulrich Drepper.

有没有办法告诉我的交叉编译器在链接时使用 GLIBC 版本 2.13 而不是 2.17?很少有研究向我提供信息,即在 BBB 上更新 GLIBC 不是简单的解决方案,所以我想知道这种方法。我会感谢所有帮助。

经过大量实验,我找到了这个解决方案。可以将 Beaglebone Black 上的 libc 版本更新到 2.17。首先从 [=14 下载 libc6_2.17-0ubuntu5_armhf.deb(用于编译硬浮点数)或 libc6-armel_2.17-0ubuntu5.1_armhf.deb(用于编译软浮点数) =]分别。

接下来,使用scp将文件复制到BBB。

scp libc6_2.17-0ubuntu5_armhf.deb root@beaglebone.local:/root

scp libc6-armel_2.17-0ubuntu5.1_armhf.deb root@beaglebone.local:/root

最后,安装包。

sudo dpkg --install libc6_2.17-0ubuntu5_armhf.deb

sudo dpkg --install libc6-armel_2.17-0ubuntu5.1_armhf.deb

尽管 ldd --version 仍显示为 2.13,但它适用于需要我设备上新版本的功能。您也可以考虑使用 sudo apt-get -f install 来摆脱旧版本。

希望对您有所帮助!