Как собрать своё приложение с использованием SDK (для разработчиков)

Как собрать своё приложение с использованием SDK (для разработчиков)

В данной статье приведен пример сборки тестового приложения для роутеров серии LTx.

Рекомендуем осуществлять сборку на операционной системе Ubuntu 16.04 LTS 64bit, но для остальных ОС на базе Linux принципы очень похожи (возможно возникнут некоторые нюансы).

SDK доступно по ссылке.

Все операции будут производиться исключительно через командную консоль (Терминал в ОС Linux)!!!


1. Подготовка к сборке приложения

     1.1. Установка SDK

Установка Python:

sudo apt install python

Создаем каталог:

mkdir sdktest

Переносим SDK в папку sdktest:

cp oecore-x86_64-armv7a-vfp-neon-toolchain-nodistro.0.sh sdktest/

Переходим в папку sdktest:

cd sdktest

Необходимо добавить возможность к исполнению для SDK по ссылке:

chmod +x oecore-x86_64-armv7a-vfp-neon-toolchain-nodistro.0.sh

Далее необходимо запустить скрипт из SDK для его установки, указав текущую директорию (".") и подтвердить ("Y"):

./oecore-x86_64-armv7a-vfp-neon-toolchain-nodistro.0.sh

Вывод после запуска скрипта:

Enter target directory for SDK (default: /usr/local/oecore-x86_64): .
You are about to install the SDK to "/home/ubuntu/sdk". Proceed[Y/n]? Y

Ждём извлечения:

Extracting SDK...done
Setting it up...done
SDK has been successfully set up and is ready to be used.

Проверим наличие нужных файлов командой:

ls -la

Пример вывода команды:

-rw-r--r-- 1 gureev gureev  2665 Aug 31 12:56 environment-setup-armv7a-vfp-neon-oe-linux-gnueabi
-rw-r--r-- 1 gureev gureev 44157 Aug 31 12:56 site-config-armv7a-vfp-neon-oe-linux-gnueabi
drwxr-xr-x 4 gureev gureev  4096 Mar  5  2019 sysroots
-rw-r--r-- 1 gureev gureev   127 Aug 31 12:56 version-armv7a-vfp-neon-oe-linux-gnueabi

     1.2 Подготовка переменных окружения

Необходимо установить переменные окружения (эту команду нужно выполнять каждый раз при открытии нового терминала):

source environment-setup-armv7a-vfp-neon-oe-linux-gnueabi

     1.3 Подготовка программы-примера HelloWorld

Создаём папку проекта и переходим в нее:

mkdir helloworld
cd helloworld

Создаём и заполняем файлы hello.c, Makefile.am, configure.in для нашего тестового приложения:

echo -e "#include <stdio.h>\n\nmain()\n{\n\tprintf(\\"Hello World\\");\n}" > hello.c
echo -e "bin_PROGRAMS = hello\nhello_SOURCES = hello.c" > Makefile.am
echo -e "AC_INIT(hello.c)\nAM_INIT_AUTOMAKE(hello,0.1)\nAC_PROG_CC\nAC_PROG_INSTALL\nAC_OUTPUT(Makefile)" > configure.in

Создаём файлы NEWS, README, AUTHORS, ChangeLog (они обязательны для сборки):

touch NEWS README AUTHORS ChangeLog

2. Пример сборки приложения

     2.1 Генерация файла configure

Сгенерируем файл configure:

autoreconf -i

     2.2 Конфигурация проекта под архитектуру

Сконфигурировать проект с указанием целевой архитектуры:

./configure --host=armv7a-vfp-neon-oe-linux-gnueabi

     2.3 Установка программы make (если не устанавливалась ранее)

Перед следующим шагом необходимо установить программу make:

sudo apt install make -y

     2.4 Начало сборки пакета

Собираем пакет командой:

make

Если возникла ошибка:

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x00007feb9a49a700 (most recent call first):
Aborted (core dumped)

Необходимо подать команду:

unset PYTHONHOME

Далее повторить команду:

make

Программа hello готова для установки в роутер.


3. Пример работы программы

Установка пакета в роутер:

scp hello root@192.168.88.1:/tmp/

Запуск программы на роутере:

root@LT5x:/# /tmp/hello
Hello World

На этом пример сборки программы HelloWorld завершен!