Писать программы для малины и компилить их на самой малине, то еще удовольствие. Сегодня попробуем написать простую программу и настроить средства для ее компиляции на десктопной машине с linux mint.

На самом деле, хоть ничего сложного в самой идее собирать сишный код на компе нет, но сам процесс имеет некоторые тонкости, которые по факту заключаются в правильной подготовке тулчейна, т.е. программ который помогут нам собрать наш исходник, для нужной нам архитектуры. В этой статье вы не найдете подготовки QT или Eclipse, мной намеренно выбран самый универсальный путь через make файл.

Для raspberry имеется готовый набор, который нам нужно установить. Я использую linux mint, поэтому в убунте по идее все должно быть точно также.

git clone https://github.com/raspberrypi/tools

Пишем исходник, например можно взять из прошлой статьи. Далее создаем файл Makefile

sudo nano Makefile

По сути, как бы делали уже тоже самое в прошлой статье

gcc hello.c -o hello

Простейший makefile выглядел бы точно также

all:
	gcc -o hello hello.c

Просто для его запуска нужно в консоли набрать make.

Теперь разница в том, что мы используем специально настроенный компилятор gcc, флаг ARCH=arm говорит об целевой платформе.

export ARCH=arm

all:
	/home/user/rpi_toolchain/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc -o hello hello.c

Дальше закрываем файл и сохраняем. Выполняем make. Все. в текущей папке появится файл hello

Можно сделать более универсальный makefile на будущее, с блекджеком

COMPILER_PATH="/home/user/rpi_toolchain/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin"
export CROSS_COMPILE=arm-bcm2708-linux-gnueabi-
export PATH="${COMPILER_PATH}":$PATH
export CROSS="${COMPILER_PATH}/${CROSS_COMPILE}"
export CC=${CROSS}gcc
export CXX=${CROSS}g++
export CPP=${CROSS}cpp
export LD=${CROSS}ld
export AS=${CROSS}as
export AR=${CROSS}ar
export RANLIB=${CROSS}ranlib
export STRIP=${CROSS}strip
export ARCH=arm

all:
	$(CC) -o hello hello.c

Полученный файл hello надо залить на плату, можно гемороиться и копировать через флешку, но как по мне удобнее его скопировать через SSH. Но перед этим создадим папку в /opt/gpio, на малине и дадим полные права кому угодно писать в эту папку, если это не сделать, то при попытке скопировать будет acess denied

sudo chmod 777 gpio

Далее скопируем наш исполняемый файл через SSH. Локальный адрес, нужно конечно же указать свой.

sudo scp /home/user/rpi_toolchain/projects/gpio_test/hello pi@192.168.0.40:/opt/gpio

В результате файл появится в папке /opt/gpio теперь можно его запустить ./hello и убедиться что он работает!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Последние комментарии
  • Загрузка...
Архивы
Счетчик
Яндекс.Метрика