我正在使用带有crosscompiller的远程主机pc,以便为BeagleBone Black构建和部署cpp代码。我的问题是,因为我试图用<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.
有没有办法告诉我的crosscompiller在链接而不是2.17时使用GLIBC 2.13版?很少的研究为我提供了一些信息,即在BBB上更新GLIBC并不是一个简单的解决方案,所以我想知道这种做法。我会帮助你。
答案 0 :(得分:2)
经过大量的实验,我遇到了这个解决方案。可以在Beaglebone Black上将libc版本更新为2.17。首先分别从https://launchpad.net/ubuntu/raring/armhf/libc6/2.17-0ubuntu5或https://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
来删除旧版本。
希望它有所帮助!