【问题标题】:Link with specific GLIBC version与特定 GLIBC 版本的链接
【发布时间】:2015-09-17 12:43:50
【问题描述】:

我正在使用带有交叉编译器的远程主机 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 不是简单的解决方案的信息,所以我想知道这种方式。我会感谢所有帮助。

【问题讨论】:

  • 如果尝试“--nodefaultlibs”(gcc.gnu.org/onlinedocs/gcc/Link-Options.html),安装在另一个目录 glibc 2.13 并使用“gcc -L”告诉哪里可以找到 libc 2.13?
  • 如何为我的交叉编译器安装特定的 GLIBC 版本?我下载的是一个完整的包。
  • 我没有为交叉编译器做过这个,所以我不能确定 100%。但是对于 glibc,您可以轻松在一台计算机上拥有两个版本的 glibcstackoverflow.com/questions/847179/…。所以我假设你需要用你的交叉编译器构建 glibc 2.13 并把它放在默认目录中。

标签: c++ linux cross-compiling glibc beagleboneblack


【解决方案1】:

经过大量实验后,我发现了这个解决方案。可以在 Beaglebone Black 上将 libc 版本更新到 2.17。首先分别从https://launchpad.net/ubuntu/raring/armhf/libc6/2.17-0ubuntu5https://launchpad.net/ubuntu/raring/armhf/libc6-armel/2.17-0ubuntu5.1 下载 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 来摆脱旧版本。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2012-03-31
    • 1970-01-01
    • 2020-09-01
    • 2012-11-08
    相关资源
    最近更新 更多