В данной статье приведен пример сборки тестового приложения для роутеров серии 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 завершен!