реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> "Hello, world!" под Olimex SAM9-L9260, Cannot execute binary file
Dimmy
сообщение Mar 26 2009, 15:57
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503



Пробую работать с Linux на ARM9. После компиляции с помощью тулчейна от codesourcery (поставляется с платой) простейшего проекта "Hello, world!" (делаю все, как в pdf) получаю executable-файл. Копирую его через SSH в /home директорию борды. меняю права на "777" Не запускается. Пишет: "cannot execute binary file"
Go to the top of the page
 
+Quote Post
AVR
сообщение Mar 30 2009, 19:16
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Dimmy @ Mar 26 2009, 18:57) *
Пишет: "cannot execute binary file"
Либо бинарник неподдерживаемого формата (надо включать поддержку в ядре и перекомпилировать), либо вообще собран для другого процессора (хостового)... Покажите как компилировали, что вызывали и так далее... Если текста много, то воспользуйтесь http://pastebin.com


--------------------
Go to the top of the page
 
+Quote Post
Dimmy
сообщение Mar 31 2009, 08:08
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503



Цитата(AVR @ Mar 30 2009, 23:16) *
Либо бинарник неподдерживаемого формата (надо включать поддержку в ядре и перекомпилировать),

Ядро перекомпиливал для поддержки стандарта EABI с возможностью запуска программ, использующих старый ABI
Цитата
либо вообще собран для другого процессора (хостового)...

При просмотре откомпиленного бинарника в заголовке четко видно:
ELF, 32 bit LSB executable, ARM, version 1 (SYSV), dynamically linked, for GNU/Linux 2.6.14 not stripped
Т.е. тулчейн тот.

Покопавшись в дополнительных PDF от Codesourcery, выяснил, что либы, по-умолчкнию находящиеся в системе, для скомпиленных бинарников не подходят. А ошибка, вышеописанная мною, может возникать не только при неправильно скомпиленных executables, а и при:

" Note that if you specify an incorrect path for --dynamic-linker, the common failure mode
seen when running your application on the target is similar to
> ./hello
./hello: No such file or directory
"
(кстати, такая ошибка вылетала именно при запуске таким способом: ./hello
При запуске-же sh hello появлялось уведомление о невозможности запустить бинарник)

Поэтому по их совету скопировал либы из .../arm-none-linux-gnueabi/libc в ФС борды (но не в root-dir (/), а в /home с сохранением путей).
Линкую проект с использованием ключей:

-Wl,-rpath=sysroot/lib:sysroot/usr/lib \
-Wl,--dynamic-linker=sysroot/lib/ld-linux.so.3
(где sysroot - путь к скопированным либам. В моем случае - /home/arm-none-linux-gnueabi/libc)

После таких манипуляций получаю ошибку "Illegal instruction"

Пока все...
Go to the top of the page
 
+Quote Post
AVR
сообщение Mar 31 2009, 09:56
Сообщение #4


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Dimmy @ Mar 31 2009, 11:08) *
Ядро перекомпиливал для поддержки стандарта EABI с возможностью запуска программ, использующих старый ABI
...
Ясно... Если нет соответствующих "либ", то работать, если не ошибаюсь, не должно... Какой дистрибутив Вы используете? (могу порекомендовать http://wiki.openembedded.net/index.php/Main_Page - вся система будет с одинаковым типом библиотек)


--------------------
Go to the top of the page
 
+Quote Post
tturist
сообщение Apr 1 2009, 07:02
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 2-04-07
Пользователь №: 26 703



имел дело с этой платой от Olimex. если не ошибаюсь, они не дают в комплекте исходники файловой системы. на мой взгляд правильный путь - собрать фс самому. это всегда хорошо. заодно не будет никакой проблемы несовместимости компилятора с библиотеками.
я собирал ядро - с сайта atmel (тулчейн от atmel), фс - от http://buildroot.uclibc.org/ (тулчейн от buildroot)
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 1 2009, 10:10
Сообщение #6


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(tturist @ Apr 1 2009, 10:02) *
я собирал ядро - с сайта atmel (тулчейн от atmel), фс - от http://buildroot.uclibc.org/ (тулчейн от buildroot)
Каковы возможности этого buildroot? Например, с помощью http://www.openembedded.org можно одной командой разом собрать кросскомпилятор, все библиотеки, программы, и при этом оно само скачает исходники, упакует их в пакеты скомпилированное, сконфигурирует, сгенерирует файловую систему, одной строчкой в конфиге выбираешь libc или uclibc, упакует ее в разные форматы и типы ФС, само отработает зависимости пакетов, само ядро соберет, и так далее... Надо привыкать к лучшему... rolleyes.gif wink.gif


--------------------
Go to the top of the page
 
+Quote Post
sasamy
сообщение Apr 2 2009, 21:21
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AVR @ Apr 1 2009, 13:10) *
Каковы возможности этого buildroot?

Возможностей в buildroot не меньше чем у openembedded, разве что две команды нужно а не одну smile.gif
Цитата
само отработает зависимости пакетов

весьма кстати сомнительный плюс.. и вообще если все вышеперчисленное плюсы - не проще готовые бинарники скачать ?
Цитата
Надо привыкать к лучшему...

лучшее - враг хорошего. тормозит при сборке безбожно, тоже самое на buildroot собирается если не на порядки то в разы быстрей - точно. к тому же как я понял топикстартеру на 9260 gpe, opie и вообще графика не особо интересны...
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 3 2009, 09:54
Сообщение #8


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(sasamy @ Apr 3 2009, 00:21) *
весьма кстати сомнительный плюс.. и вообще если все вышеперчисленное плюсы - не проще готовые бинарники скачать ?
Можно и бинарники, но речь идет о пакетах, которые устанавливаются при формировании файловой системы. Таким образом, система получается без пакетного менеджера, и это экономит много места, и при этом зависимости программ сама сборочная среда все-таки отслеживает. В последствии можно доустановить пакетный менеджер и эти же пакеты применить для установки... Buildroot такое может (если да, то надо будет изучить)? smile.gif
Цитата
лучшее - враг хорошего. тормозит при сборке безбожно, тоже самое на buildroot собирается если не на порядки то в разы быстрей - точно. к тому же как я понял топикстартеру на 9260 gpe, opie и вообще графика не особо интересны...
OpenEmbedded на питоне написана, поэтому так медленно. Однако, разработчики рекомендуют установить http://psyco.sourceforge.net/introduction.html "Think of Psyco as a kind of just-in-time (JIT) compiler" (есть в любом дистрибутиве) - скорость обработки реально повышается в разы.


--------------------
Go to the top of the page
 
+Quote Post
sasamy
сообщение Apr 3 2009, 12:26
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AVR @ Apr 3 2009, 12:54) *
Можно и бинарники, но речь идет о пакетах, которые устанавливаются при формировании файловой системы. Таким образом, система получается без пакетного менеджера, и это экономит много места, и при этом зависимости программ сама сборочная среда все-таки отслеживает. В последствии можно доустановить пакетный менеджер и эти же пакеты применить для установки... Buildroot такое может (если да, то надо будет изучить)? :)OpenEmbedded на питоне написана, поэтому так медленно. Однако, разработчики рекомендуют установить http://psyco.sourceforge.net/introduction.html "Think of Psyco as a kind of just-in-time (JIT) compiler" (есть в любом дистрибутиве) - скорость обработки реально повышается в разы.

Лично мне вышеописанное не нужно, на момент сборки корневой фс я достаточно четко представляю что мне в будущей системе нужно и собираю только то что мне действительно нужно, впоследствии если что -то упустил создать новую фс с тем что уже собрано дело секунд десяти + новый пакет. по тому что вы описываете я как раз и говорю - сомнительные плюсы, зачем это все собирать самому ? есть ангстром, дебиан, рэдхат, есть например такая штука
http://amethyst.openembedded.net/~koen/narcissus/
есть проект T2 - похож чем-то на ОЕ - такой же неторопливый smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01808 секунд с 7
ELECTRONIX ©2004-2016