LINUX.ORG.RU

Сборка Qt-Embedded для ARM

 , , ,


0

1

Всем привет! У меня проблема с запуском приложения на целевой ОС..

# uname -a
Linux AT91SAM9 2.6.30.5 #161 Tue Aug 16 19:00:11 MSD 2016 armv5tejl GNU/Linux
Приложение написано на Qt, ОС Ubuntu 14.04. Требовалось внести изменения в приложение, скомпилировать и залить в устройство. Компиляция прошла успешно, но при попытке запустить его на устройстве вылетает следующее..
# ./for_test -qws
-sh: ./for_test: not found
Вот тип файла полученного после компиляции..
#file for_test 
for_test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped
На устройстве осталось приложение которое работало и работает по сей час, оно запускается без проблем. Вот его тип...
# file tcp_old 
tcp_old: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
Как и чем компилировалось я не знаю. И видно что у моего файла указана версия ядра. Явно не совпадает с версией целевой ОС. Для компиляции приложения я использую Qt-Embedded-4.5.3 (Грешу на не правильную конфигурацию)

Вот конфигурация..

./configure -v -lrt -prefix /usr/local/Trolltech/Qt-Embedded-4.5.3 -release -opensource -shared -embedded arm -no-fontconfig -xplatform qws/linux-arm-g++ -qt-mouse-tslib -no-largefile -webkit -exceptions -no-qt3support -no-sse2 -qt-zlib -qt-libpng -qt-libtiff -qt-libmng -qt-libjpeg -depths 16,24,32 -nomake demos -nomake examples -confirm-license
Сборка и установка прошли успешно, наверное. Подтянул компилятор и библиотеки, QtCreator не ругался.

Подскажите пожалуйста что я делаю не так.

Ответ на: комментарий от Landgraf

Спасибо за быстрый отклик. О раздаче прав я в курсе, но проблема в чем-то другом.

# ls -l
-rwxrwxrwx    1 root     root       487667 Dec 31  1969 tcp_old
-rwxrwxrwx    1 root     root         6816 Dec 31  1969 for_test
# ./for_test -qws
-sh: ./for_test: not found

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

проверь права на директорию, может она смонтирована с noexec

anonymous ()

Возможно это OABI vs. EABI проблема, учитывая твой древнейший как не знаю что, процессор.

http://www.friendlyarm.net/forum/topic/3460

Ещё это может говорить о том, что interpreter ELF-файлов не найден:

https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/file-not-found-when-executing-assembled-program

Думаю с ldd тоже ошибка подобная будет. Попробуй ещё под strace запустить, может что более очевидно будет.

EXL ★★★★★ ()

Версия libc твоего тулчейна не соответствует версии на девайсе, not found относится к elf-загрузчику ld.so, имя которого вписано в бинарник

annulen ★★★★★ ()

strace тебе поможет.

Скорее всего ты собрал софтину с слишком свежим тулчейном под модный libc, а на устройстве говно мамонта десятилетней давности.

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

по поводу «амно мамонта» я с Вами полностью согласен. Почитаю про strace.. попробую. Знаний пока что маловато. На сколько я понял, загрузчики, ядро и фс собирали ещё чёрт знает сколько лет назад, и использовали buildroot2009.хх и бонусом получали тулчейт под указанное ядро. А на сегодняшний день в живых осталась только малая часть всех наработок. С билдрут я познакомился по касательной и получил загрузчики, ядро и файл.систему, но с тулчейн что-то не то. Но заливать полученный результат в устройство нет никакого желания, чтоб не превратить устройство в кирпич. Единственный выход собрать инструменты для компиляции приложения под то что есть. Пока что разбираюсь с Вашими советами.

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

Принял решение поковыряться с Boildroot-2009.08 (на сколько я понял то с его помощью получили тулчейн для дальнейшей работы)

buildroot-2009.08$ make menuconfig

Указал пока что только проц...

Target Architecture (arm)  ---> 
Target Architecture Variant (arm926t)  --->
Target ABI (EABI)  --->

и версию ядра...

Toolchain type (Buildroot toolchain)  --->
*** Kernel Header Options ***
Kernel Headers (Linux 2.6.30.x kernel headers)  --->

buildroot-2009.08$ make

Спустя некоторое время спотыкнулся на скачивании архива fakeroot-1.9.5. Мол по адресу http://snapshot.debian.net/archive/2008/04/27/debian/pool/main/f/fakeroot//fa... такое чудо не лежит. Нашел его по адресу http://snapshot.debian.org/archive/debian/20080427T000000Z/pool/main/f/fakero... Сменил адрес и пошел дальше. Следующая остановка по не понятной мне причине. Выдает следующее...

/home/tosh/work/arm9/buildroot/buildroot-2009.08/build_arm/makedevs-host/makedevs.c: In function ‘main’:
/home/tosh/work/arm9/buildroot/buildroot-2009.08/build_arm/makedevs-host/makedevs.c:366:6: error: variable ‘ret’ set but not used [-Werror=unused-but-set-variable]
  int ret = EXIT_SUCCESS;
      ^
cc1: all warnings being treated as errors
make: *** [/home/tosh/work/arm9/buildroot/buildroot-2009.08/build_arm/makedevs-host/makedevs] Ошибка 1

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

«выкидывай -Werror из параметров компилятора»

Можно подробней об этом? Какие манипуляции для этого требуются?

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

Извиняюсь, поспешил с комментарием на Ваше сообщение по поводу «выкидывай -Werror из параметров компилятора». Спасибо за подсказку! Из команды...

buildroot-2009.08$ /usr/bin/gcc -Wall -Werror -O2 /home/tosh/work/arm9/buildroot/buildroot-2009.08/build_arm/makedevs-host/makedevs.c -o /home/tosh/work/arm9/buildroot/buildroot-2009.08/build_arm/makedevs-host/makedevs

Убрал аргумент -Werror. Иду дальше. Опять ругается на архив по адресу http://easynews.dl.sourceforge.net/sourceforge/genext2fs/genext2fs-1.4.tar.gz Буду искать...

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

Это на компе делать надо бы по идее. Прямо твои тулчейном.

Можно даже

arm-linux-gnueabi-readelf -A for_test
EXL ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.