Купил плату SK-AT91SAM9XE512-S3E, на ней стоит штатный Linux.
Я ламер в ARM, на форуме ничего не нашел.
Хочу запустить на отладочной плате простейшее приложение:
main.c
#include <stdio.h>
int main( void )
{
printf("Hello, Serega!\r\n");
return 0;
}
Закидываю, через ftp, hello на плату.
Подключаюсь через telnet к плате, набираю:
chmod 777 ./hello
./hello
Возвращается ошибка: /bin/sh: ./hello: not found
По команде ls, hello присутствует на плате.
Похоже что-то не так на этапе компиляции. Подскажите в чем моя ошибка.
плодится бинарник 400-500 кил..
тогда надо разбираться в процессе компиляции и смотреть, как формируются зависимости от динамических библиотек. наверняка давно есть решение этого вопроса.. может нужен ключ или скрипт, результатом будет комплект библиотек для таргета
желающие могут изучить вопрос и возможные пути решения, ибо этот вопрос возникает чаще чем новый год..
Посмотрите вывод ldd для динамически собранного бинарника на плате.
ldd ./hello
Прозреваю что залинковано оно не на ту версию сишной библиотеки.
может нужен ключ или скрипт, результатом будет комплект библиотек для таргета
Банально указывается путь до библиотек таргета через ключик -L/path/to/target/std/c/libs
Можете почитать мой пост по динамической компиляции бинарников для Андроида: http://highscreen.org/forum/viewtopic.php?p=6885#p6885
Принцип примерно тот же. Только здесь, скорей всего не придётся так сильно извращаться
Посмотрел я на дефолтный rootfs, как и предполагалось там uclibc, а gcc из комплекта arm-2007q1 всё линкует на glibc из arm-2007q1/arm-none-linux-gnueabi/libc/lib.
Просто я таких проблем не имел в принципе, т.к. сразу вкатил на плату Debian с glibc.