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

 
 
> "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
 
Start new topic
Ответов
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



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:08
Рейтинг@Mail.ru


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