LINUX.ORG.RU

Не запускаются программы на собранном embedded linux

 , ,


0

1

Здравствуйте. Я тут собрал linux c ядром 4.3 под модуль, под процессор NIOS который реализует ПЛИС. Столкнулся с трудностями, первое не запускаются программы пишет "-sh file not found", смотрел с помощью ldd пишет что не хватает glibc версии 2.10. Но с помощью find нашел файл с библиотекой, посмотрел через strings | grep GLIBC, выдал только GLIBC_2.21, хотя должен быть список из всех версий вплоть до 2.21 насколько я понимаю. Может я неправильно сконфигурировал ядро или buildroot? Хотя никаких опция для glibc я не нашел. И еще вопрос можно ли собрать buildroot с gcc т.к. поставить его нет менеджера пакетов, только через buildroot или менеджер пакетов но в первом компиляторы убрали, а менеджеров пакетов в системе нет. Buildroot брал тут http://git.buildroot.net/git/buildroot.git Ядро тут https://github.com/altera-opensource/linux-socfpga.git Компилятор Sourcery CodeBench Lite 2014.05-47

Попробуй для начала скомпилировать статический бинарник. И для всяких встраиваемых систем лучше использовать, например, musl вместо glibc.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

без особых требований к размеру файловой системы лучше таки glibc. ТС, Скорее всего проблема в том, какую glibc собирает buildroot и какая в тулчейне. Соответственно определиться с этим и прописать нужные пути при сборке бинарников.

slapin ★★★★★ ()

Собери свой рутфс без использование внешниз тулчейнов просто билдрутом и посмотри, остается ли проблема.

slapin ★★★★★ ()
Ответ на: комментарий от slapin

Как оказалось я незнал куда смотреть и собирал до этого именно билдрутом, попробовал внешним тулчейном собрать «/bin/sh: /lib/libc.so.6: version `GLIBC_2.20' not found (required by /bin/sh) /bin/sh: /lib/libc.so.6: version `GLIBC_2.20' not found (required by /usr/lib/li breadline.so.6) /bin/sh: /lib/libc.so.6: version `GLIBC_2.20' not found (required by /usr/lib/li bhistory.so.6) /bin/sh: /lib/libc.so.6: version `GLIBC_2.20' not found (required by /usr/lib/li bncurses.so.5) Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100» А в статике вобще glibc не дает собрать, только musl или uClibc.

Pro100MoNEy ()
Ответ на: комментарий от Pro100MoNEy

В конфиге билдрута. Вообще, я давно пользовался билдрутом, но вроде таких проьлем не было. При таких ошибках проблемы должны быть при линковке, так что скорее всего либа, с которой происходит линковка и та, что в рутфсе - не одна и та же. Я бы стейджинг полностью почистил и собрал бы дефолтный рутфс билдрута (без добавления своих бинарей), а потом уже от этого плясал.

slapin ★★★★★ ()
Ответ на: комментарий от slapin

Да действительно забыл clean сделать. Система стартует, собрал в статике с musl, результат тот же не хватает glibc_2.10. Попробую c uClib. Билдрут кстати чистый собираю своего не добавлял.

Pro100MoNEy ()
Ответ на: комментарий от CYB3R

Собрал свой бинарник с -static-libgcc работает, но почему библиотека в системе версии 2.21 не позволяет запускать программы требующие 2.10 не понял, и еще под вопросом можно ли статически линковать glibc? Не вызовет ли это программных проблем и проблем с лицензией?

Pro100MoNEy ()
Ответ на: комментарий от Pro100MoNEy

Проблемы с тулчейном, не должно такого быть. Ты бы вместо того, чтобы плодить костыли, разобрался бы с чем у тебя компиляется а с чем линкуется. Ты банально линкуешь с более новой libc чем у тебя в rootfs. Да и разные компиляторы - разная libgcc. Используй тот же самый тулчейн и для сборки билдрута и для своего бинарника, и всё будет в порядке.

slapin ★★★★★ ()
Последнее исправление: slapin (всего исправлений: 1)
Ответ на: комментарий от slapin

Так я теперь и использую один тулчейн для сборки всего. Еслиб разные были бы подумал бы так же.

Pro100MoNEy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.