Следую гайду Как разрабатывать ПО для 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
Предлагаю упомянуть данный момент в документации, т.к. сейчас она довольно оптимистична.