Писать программы для малины и компилить их на самой малине, то еще удовольствие. Сегодня попробуем написать простую программу и настроить средства для ее компиляции на десктопной машине с 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 и убедиться что он работает!
Добавить комментарий