2015-06-30 8 views
2

Я использую компьютер удаленного хоста с кросскомпьютером для создания и развертывания кода cpp для BeagleBone Black. Моя проблема заключается в том, что, так как я пытался запустить свой код с <time.h> функциями я получил сообщение:Ссылка на конкретную версию GLIBC

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

Так что я должен проверить, какая версия у меня на ВВВ с помощью ldd --version и получил:

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? Небольшое исследование предоставило мне информацию о том, что обновление GLIBC на BBB - не простое решение, поэтому мне было интересно, как это сделать. Я бы оценил всю помощь.

+0

Что делать, если попробовать «--nodefaultlibs» (http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html), установить в другой каталог glibc 2.13 и использовать «gcc -L», чтобы указать, где искать libc 2.13? –

+0

Как установить конкретную версию GLIBC для моего кросс-компилятора? Я скачал как целый пакет. – Bremen

+0

Я не делал этого для кросс-компиляторов, поэтому я не могу быть уверен в 100%. Однако для glibc вы можете ** легко ** иметь две версии 'glibc' на одном компьютере: http://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host. Поэтому я предполагаю, что вам нужно построить glibc 2.13 с вашим кросс-компилером и поставить его в некотором смысле не в каталог по умолчанию. –

ответ

2

После большого количества экспериментов я столкнулся с этим решением. Можно обновить версию libc до версии 2.17 на Beaglebone Black. Сначала загрузите libc6_2.17-0ubuntu5_armhf.deb (для компиляции с жесткими поплавками) или libc6-armel_2.17-0ubuntu5.1_armhf.deb (для компиляции с мягкими поплавками) с https://launchpad.net/ubuntu/raring/armhf/libc6/2.17-0ubuntu5 или https://launchpad.net/ubuntu/raring/armhf/libc6-armel/2.17-0ubuntu5.1 соответственно.

Далее, используйте scp для копирования файла на BBB.

scp libc6_2.17-0ubuntu5_armhf.deb [email protected]:/root 

scp libc6-armel_2.17-0ubuntu5.1_armhf.deb [email protected]:/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, чтобы избавиться от старой версии.

Надеюсь, это поможет!

Смежные вопросы