сборка usermode кода

Что-то у меня лыжи совсем не едут :frowning:

Поставил на ubuntu gcc-arm-none-eabi-4_7-2013q3-20130916-linux.tar.bz2
Прописал CC на gcc-arm-none-eabi-4_7-2013q3/bin/arm-none-eabi-gcc

Написал программу “hello world”
Собрал ее $CC -o test tst.c -lc -lrdimon
Посмотрел через readelf - вроде похоже на то, что нужно

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x8104
  Start of program headers:          52 (bytes into file)
  Start of section headers:          86052 (bytes into file)
  Flags:                             0x5000002, has entry point, Version5 EABI

Переписываю на WB, запускаю, получаю “Segmentation fault”

Что я делаю не так?

Я делал согласно рекомендаций Евгения:

Инструкции нет, но процедура достаточно тривиальная. Вам нужна машина с Debian или Ubuntu, туда вы ставите qemu и ещё парочку пакетов, скачиваете образ для wiren board (rootfs), такой же как и записывается на карточку, распаковываете его и делаете туда виртуализованный chroot. Делается скриптом ./chroot_this.sh, который лежит в корне rootfs. Необходимые пакеты можно посмотреть в начале этого скрипта: https://github.com/contactless/wirenboard/blob/master/rootfs/create_rootfs.sh

После chroot вы оказываетесь в виртуализованном armel окружении, дальше всё делаете как на обычной машине с Debian.

В результате получил виртуализованное окружение в котором легко собираются пакеты из исходников. Там собирал и ism-radio и domoticz пакеты.
Думаю, что для Вас это также будет оптимальным вариантом.
PS: Точных инструкций чтобы все заработало у меня сейчас нет, может попозже смогу сделать how to для получения рабочего окружения.

Если хочется кросс-компилятор, то можно поставить gcc-arm-linux-gnueabi . Работать правда будет только со статической компиляцией или с чем-нибудь очень простым, т.к. версия libc и остальных библиотек на убунте не совпадает с Debian Wheezy. Для Debian Wheezy нормальных кросс-компиляторов нет, только суперстарый embeddian oldstable.

Виртуализованный chroot, как написали выше, пока похоже единственный нормально работающий способ.

Для простых экспериментов оказалось достаточным apt-get install gcc-arm-linux-gnueabi в рабочей (ubuntu/i386) системе
После установки этого пакета можно собраться простым arm-linux-gnueabi-gcc -o test tst.c и все заработает

P.S. затею с chroot пока не вкурил :frowning: Не вижу, где там сборка/установка dev- компонент (либ и пр.)

chroot - это как бы разработка на самом устройстве, но только “быстрее”. Так как используется виртуализация и код выполняется на более быстром процессоре. Все ставится как на обычно дебиане.
Уверен что на самой WB SH также можно собирать проекты (Domoticz, например, на Raspberry PI собирается за полчаса), но просто это будет мучительно долго :-).