Сборка кросс-компилятора glibc с помощью Buildroot 2019.05 - PullRequest
0 голосов
/ 21 июня 2019

Я хотел бы распространить свое приложение в двоичном формате. Тем не менее, когда я компилирую в Fedora 30 (которая имеет glibc-2.29), мои двоичные и требуемые зависимости имеют несколько ссылок на символы в glibc-2.29. Кажется, их слишком много, чтобы эффективно (и они встречаются глубоко в системных зависимостях) использовать что-то вроде следующего:

__asm__(".symver logf,logf@GLIBC_2.2.5");

Поэтому я пытался создать кросс-компилятор glibc. Поскольку мне нужно скомпилировать множество зависимостей (Xorg, OpenGL и т. Д.), Я подумал, что будет проще использовать Buildroot . К сожалению, Buildroot 2019.05, похоже, автоматически использует glibc-2.29, и, похоже, в make menuconfig нет возможности изменить это.

Есть ли способ заставить Buildroot использовать glibc-2.24? Я бы предпочел не компилировать при отслеживании распространения старый glibc.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Решение 1:

Используйте цепочку инструментов, изначально использовавшуюся для создания корневой файловой системы (или дистрибутива), в которой должно выполняться ваше приложение.

Таким образом, вы будете иметь ту же версию glibc и ту же версию всех других библиотек.

Решение 2:

Создайте приложение статически. Но вы должны проверить, могут ли компоненты клиент / сервер (такие как Xorg) работать с версией сервера, отличной от версии клиента.

Другие решения:

Если это невозможно, вы можете попробовать выполнить одно из следующих действий:

  • Используйте Buildroot 2017.08. Glibc был повышен до 2,26 в 2017 году.
  • Создайте цепочку инструментов с Crosstool-NG , которая поддерживает множество версий glibc, затем используйте его в Buildroot в качестве внешнего набора инструментов и соберите все библиотеки тебе нужно.

Но они могут добавить больше проблем, чем решают, поскольку вам все равно нужно будет найти версию Buildroot, в которой все библиотеки имеют версию, совместимую с вашей целью.

0 голосов
/ 21 июня 2019

Я думаю, вы можете попробовать более старую версию buildroot. Но я не уверен, какой из них использует glibc-2.24.

...