Цепочка инструментов Buildroot для BBB: ошибка версии gclib

Я пытался выполнить кросс-компиляцию с компьютера Debian для BeagleBone Black, и мне удалось собрать образец «hello-world» и собрать wxWidgets, но когда я скомпилировал приложение wxWidgets («минимальный» образец), я не удалось, потому что я не смог найти и связать необходимые библиотеки для armhf (GTK+, X11 и т. д.... см. мой вопрос здесь)

Я нашел страницу, объясняющую, как использовать BuildRoot для компиляции для Raspberry, поэтому я выбрал этот путь и смог настроить и создать «хост», который сначала скомпилировал wxWidgets, а затем «минимальный» пример приложения.

Проблема в том, что на моем BBB он не запускается, потому что другая версия gclib

debian@beaglebone:~$ ./minimal
./minimal: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.28' not found (required by ./minimal)

debian@beaglebone:~$ ldd --version
ldd (Debian GLIBC 2.24-11+deb9u3) 2.24
Copyright (C) 2016 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.

Итак, я снова бьюсь головой о стену. Какие параметры я должен использовать в BuildRoot, чтобы иметь возможность использовать тот же gcc (и все необходимые библиотеки, которые я не знаю, на что мне смотреть), которые присутствуют в моем BBB?

Linux version 4.9.88-ti-r111 (root@b9-am57xx-beagle-x15-2gb) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP PREEMPT Sun Apr 22 08:04:34 UTC 2018
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516

person Parduz    schedule 30.05.2019    source источник


Ответы (1)


Похоже, вы строите в одной среде, а работаете в другой.

Это похоже на компиляцию в одном дистрибутиве и попытку запуска в другом дистрибутиве.
Или даже компиляцию в одном выпуске дистрибутива и использование другого для запуска — например. Debian Jessie против Stretch.

Дополнительным доказательством является то, что вы упоминаете:

  • BuildRoot в качестве среды сборки
  • debian@beaglebone и ldd (Debian GLIBC 2.24-11+deb9u3) 2.24

Основной конфликт версий заключается в том, что BuildRoot и Debian 9 используют разные версии libc (и других библиотек).

Правильный способ решить эту проблему — создать соответствующую среду. В данном случае это будет Debian 9 — либо как собственно дистрибутив, либо, по крайней мере, как chroot. Пакет, который вы должны установить:
crossbuild-essential-armhf
Это даст вам необходимые цепочки инструментов и зависимости.

person TBR    schedule 31.05.2019
comment
Я думаю, что не могу понять, что вы мне говорите, извините. Должен ли я установить и использовать этот пакет ВМЕСТО сборки root? Я уже сделал это, и мне не удается скомпилировать образцы wxWidgets, потому что он не может найти много библиотек (pango, gtk2, X11 и т. д.). Если вместо этого вы говорите, что это был пакет, который BuildRoot должен использовать для создайте цепочку инструментов, тогда я не знаю, как настроить BuildRoot для этого. - person Parduz; 31.05.2019
comment
Это именно то, что говорит @TBR. И действительно, вам также придется создавать все эти зависимости. Однако вместо их сборки вы можете установить пакеты разработки для нескольких архитектур, добавив armhf в качестве одной из архитектур на вашей сборочной машине Debian. - person Arnout; 31.05.2019