Установка и настройка среды разработки NetBeans IDE и инструментов кросс-компиляции кода C/C++ для процессора MT7688.

Если начинать программировать на языке Python можно почти сразу, как только вы достали Omega2 из коробки, то для программирования на С/С++ нужно немного повозиться и подготовить инструменты и среду разработки.

Маленький объем оперативной памяти микрокомпьютера позволяет компилировать собственными силами только несложный исходный код на С/С++. Для работы над серьезными проектами, особенно с подключением нескольких библиотек, придется применить кросс-компиляцию – компилировать программы на “большом” компьютере, но для платформы MT768x.

Инструменты кросс-компиляции работают под Linux. Для многих разработчиков (включая меня) базовой ОС является Windows, поэтому удобнее запускать Linux в виртуальной машине по мере необходимости. Итак, план действий таков:

  1. Установить на Windows-компьютер оболочку виртуальную машину. У меня установлена VM Ware Workstation 10, вы можете установить любую другую по своему усмотрению.
  2. Создать виртуальную Linux-машину. Я работаю с Ubuntu 18.04 LTS. Рекомендую скачать установочный образ (ISO) и указать его, как источник установки. Большинство виртуальных машин поддерживают ускоренную установку Ubuntu.
  3. Скачать исходники и собрать из них компилятор для MT768x.
  4. Скачать и установить на Ubuntu среду разработки NetBeans IDE для Linux. Вы можете использовать другую, привычную для вас среду разработки, если она позволяет подключать внешние компиляторы.
  5. Подключить ранее приготовленный компилятор к NetBeans IDE.
  6. Наслаждаться процессом программирования на C/C++ для Onion Omega2.

Скачивание и сборка тулчейна

Процесс скачивания и сборки набора инструментов для компиляции описан на сайте onion.io, но после обновления прошивки появились некоторые нюансы. Откройте терминал Linux и введите команду для скачивания и установки зависимостей:

sudo apt-get install -y git wget subversion build-essential libncurses5-dev zlib1g-dev gawk flex quilt git-core unzip libssl-dev python-dev python-pip libxml-parser-perl

Скачивание и установка займет некоторое время. После завершения установки введите команду для скачивания исходника тулчейна для OpenWRT/LEDE:

git clone https://github.com/OnionIoT/source.git

Исходник кастомизирован под Omega2, поэтому производитель рекомендует просто ввести команды

cd source
make

для запуска сборки из исходников. Но у меня сборка тут же вылетала с ошибкой формата make-файла. Для устранения ошибки сначала запускаем меню конфигурации:

cd source
make menuconfig

В настройках ничего не меняем, а просто выбираем в нижней строке команду Save, а затем Exit. При этом файл конфигурации сборки будет сохранен заново, но без ошибок формата.

Теперь запускаем сборку из исходников командой make. Если у вас современный мощный компьютер с многоядерным процессором и объемом ОЗУ 8…16 GB, можете использовать команду с указанием количества потоков:

make -j8

Здесь 8 означает количество потоков. Разумеется, можно указать и меньшее количество потоков.

Внимание! На слабых компьютерах сборка тулчейна занимает несколько часов, при этом категорически не рекомендуется сворачивать окно виртуальной машины и занимать компьютер другими программами, иначе диспетчер процессов Windows может решить, что виртуальная машина зависла и заблокировать процесс виртуальной машины Ubuntu. В таком случае сборку придется запускать заново. Аналогичный сбой произойдет, если вы выделили виртуальной машине менее 2GB ОЗУ. Например, на компьютере с процессором Intel Core2Duo 2,33 ГГц и выделенным
для виртуальной машины ОЗУ 2GB сборка длится около 5 часов (в 1 поток). На компьютере с процессором Intel Core i5-6400 2,7 ГГц и выделенным для виртуальной машины ОЗУ 4GB сборка в 8 потоков длится чуть меньше часа.

Установка Oracle Java JDK 8

Непосредственно для работы с Omega2 нам не нужен пакет Java JDK 8, но это обязательный компонент для среды NetBeans IDE. Скачаем и установим этот компонент:

sudo add-apt-repository ppa:webupd8team/java 
sudo apt update
sudo apt install oracle-java8-installer
sudo apt install oracle-java8-set-default

После установки удостоверимся, что установка прошла правильно и пакет виден в окружении ОС:

javac -version

Установка NetBeans IDE для Ubuntu

Скачаем установщик NetBeans IDE (команда в одной строке). Он должен оказаться в каталоге /tmp.

cd /tmp && wget -c http://download.netbeans.org/netbeans/8.2/final/bundles/netbeans-8.2-linux.sh 

Оставаясь в каталоге /tmp, выполним команды:

chmod +x netbeans-8.2-linux.sh
sudo ./netbeans-8.2-linux.sh

На этом этапе ничего не кастомизируем и просто устанавливаем NetBeans IDE с опциями по умолчанию. Если установщик не может найти каталог с Java JDK, укажите ему путь /usr/lib/jvm/java-8-oracle.

Настройка инструментов кросс-компиляции

Запустите NetBeans IDE. Выберите пункты меню Tools – Plugins – Installed. Убедитесь, что выбраны, как минимум, четыре обязательных модуля, как на рисунке, затем нажмите кнопку Activate:

Настройка модулей NetBeans IDE

Теперь укажем пути к тулчейну кросс-компиляции, который мы собирали всю ночь (или один час – кому как повезло компьютером). Выберите пункты меню Tools – Options – C/C++. Под полем Tool Collection нажмите кнопку Add. В открывшемся окне укажите путь к базовому каталогу. В нашем случае это путь /home/<username>/source/toolchain. Среда NetBeans IDE автоматически распознает наличие инструмента компиляции в этом каталоге. В поле Tools Collection Name введите удобное для вас имя инструмента, например, OmegaCross:

Настройка базового каталога и имени тулчейна

Теперь укажем пути непосредственно к компиляторам C и С++. Здесь важно не ошибиться с выбором имени файла и не перепутать исполняемый файл с ярлыком файла, который находится в этом же каталоге. Попробуйте просто скопировать готовые пути из этой статьи. Для компилятора C: /home/<username>/source/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/mipsel-openwrt-linux-gcc
Для компилятора C++: /home/<username>/source/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/mipsel-openwrt-linux-c++

Не забывайте заменить в пути <username> на свое имя пользователя Linux.

Настройка путей к файлам компиляторов

Скопируйте базовую часть пути /home/rover/source/staging_dir/toolchain-mipsel_24kc_gcc-7.3.0_musl/bin/, нажмите кнопку с надписью $PATH и подставьте скопированный путь в поле PATH через точку с запятой:

Добавление пути в переменную окружения PATH

Сохраните настройки. Теперь ваша среда разработки готова к созданию первого проекта на языке С или С++.

Пример проекта на языке C в среде NetBeans IDE

Запустите NetBeans IDE и выберите в меню File – New Project. В новом окне выберите C/C++ Application:

Выбираем тип проекта

В следующем окне задайте имя проекта (допустим, test), напротив поля “Create Main File” выберите язык программирования C или C++, в поле Tool Collection выберите набор инструментов для кросс-компиляции, который недавно настроили. У меня он называется OmegaCross. Нажмите кнопку Finish.

Создайте новый проект с названием test, откройте файл main.c и добавьте в него команду вывода сообщения в терминал командной строки, как показано на рисунке:

Исходный код пробного приложения

Нажмите иконку с изображением молоточка, чтобы запустить процесс сборки и компиляции проекта. Если вы все сделали правильно, то в нижней секции появится сообщение BUILD SUCCESSFUL, а исполняемый файл приложения окажется в каталоге NetbeansProjects/test/dist/Debig/OmegaCross-Linux/.

Расположение исполняемого файла приложения

Исполняемые файлы можно очень удобно выгружать в память Omega2 прямо из Linux при помощи стандартного файлового менеджера Nautilus. Откройте еще одно окно файлового менеджера, кликните на пункт меню Other Locations, а затем в поле Connect to Server введите адрес Omega2 в вашей домашней сети по протоколу SFTP. Для новой прошивки по умолчанию это sftp://192.168.1.3. У вас, разумеется, может быть задан другой адрес в настройках Omega2. Для подключения потребуется ввести имя пользователя (по умолчанию root) и пароль (по умолчанию onioneer). Затем откройте в файловой системе Omega2 каталог /root и просто перетащите в него исполняемый файл.

Откройте любой терминал командной строки, подключенный к Omega2 (я предпочитаю PuTTY) и введите команду

/root/test

Теперь вы можете писать и отлаживать программы на языках C и С++ в очень мощной и удобной универсальной среде разработки NetBeans.

Кстати, в этой среде вы можете разрабатывать код для Omega2 и на языках Python и PHP. Достаточно лишь подключить необходимые плагины среды разработки.

Больше про Omega2 и Arduino вы можете прочитать в моей книге