Улучшение документации по разработке ПО для Wirenboard

Следую гайду Как разрабатывать ПО для Wiren Board (раздел " Тулчейн (toolchain)"), устанавливаю упомянутый тулчейн на своей Ubuntu 23.10, собираю программу, переношу её на контроллер, не запускается:

Ошибки

./inverter_poller: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.32’ not found (required by ./inverter_poller
)

./inverter_poller: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.34’ not found (required by ./inverter_poller
)

./inverter_poller: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.38’ not found (required by ./inverter_poller
)

./inverter_poller: /lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.32’ not found (required by ./invert
er_poller)

./inverter_poller: /lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.29’ not found (required by ./invert
er_poller)

./inverter_poller: /lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.31’ not found (required by ./invert
er_poller)

Если последние три ошибки и решаются статической линковкой к libstdc++, то вот первые три - увы, не исправить.

Выходит, что не так всё и просто, схема “установил тулчейн из системного репозитория или с ARM.COM, и дело в шляпе” - не работает. Точнее, работает только в том случае, если сам тулчейн использует версию glibc не выше той, что используется на Wirenboard (а на данный момент WB работает на bullseye c glibc 2.31). Тулчейны последней Ubuntu и свежие тулчейны с arm.com используют более новую версию glibc, поэтому не подходят.

Проблему можно решить, собрав свой собственный тулчейн с помощью crosstool-ng, прикрепляю конфиг для сборки рабочего тулчейна:

.config (23,3 КБ)

Инструкции, как собрать тулчейн
# 1. Клонируем crosstool-ng
git clone https://github.com/crosstool-ng/crosstool-ng && cd crosstool-ng

# 2. Собираем сам crosstool-ng. Если в процессе будут какие-то ошибки из-за
# отсутствия нужных библиотек в системе - установить их
./bootstrap
./configure --enable-local
make

# 3. Скопировать конфиг в директорию crosstool-ng
<...>

# 4. Собираем тулчейн
./ct-ng build

Предлагаю упомянуть данный момент в документации, т.к. сейчас она довольно оптимистична.

Добрый день.
Про завсимость от libc написано ведь, уже.
Оптимальным является сборка в docker, как описано тут: Как разрабатывать ПО для Wiren Board — Wiren Board
Тогда библиотеки хоста - не влияют. Как раз дтот контейнер и используется для автоматизировааного CD.