Каталог

С-компиляция на Omega

Поскольку Omega - это компьютер с Linux, он поддерживает программы на C и C++. По умолчанию gcc (компилятор C) и g ++ (компилятор C ++) не установлены. Здесь будут рассмотрены ограничения при компиляции программ на C и C ++, а также инструкции о том как установить и использовать компиляторы.

Ограничения

Существуют два основных ограничения при компиляции программ на C и C ++: скорость обработки и доступность header-файлов библиотек.

Скорость обработки

Процессор Omega оптимизирован под малые энергопотребление и тепловыделение, и значит он не такой мощный, как среднестатистический современный ноутбук. Поэтому компилирование больших программ займет некоторое время.

Доступность header-файла библиотеки

При сборке ОС Omega header-файлы библиотек, не относящихся к стандартным, не включаются для экономии места. Если вы посмотрите на /usr/lib и сравните его с /usr/include, где хранятся header-файлы, вы увидите несоответствие: некоторые объекты библиотеки не имеют соответствующих header-файлов!

Включены библиотеки:

  • libugpio
  • libonioni2c
  • libonionpwmexp
  • libonionoledexp
  • libonionrelayexp
  • libuci
  • libubus
  • libjson-с
  • libiwinfo

Чтобы использовать библиотеку в программе, нужно включить header-файл в свой код, чтобы компилятор понимал объявление функций, которые вы используете из этой библиотеки. Затем, когда компилятор связывает бинарный файл вашей программы, он должен быть проинформирован о местонахождении динамической библиотеки (.so – файл). Если header-файлы отсутствуют, компилятор не сможет успешно скомпилировать программу, даже если объект библиотеки присутствует.

Решение

Можно преодолеть эти два ограничения, используя LEDE build system (на ПК) для кросс-компиляции программ для Omega.

См. статью о кросс-компиляции для более подробной информации.

Установка компилятора

Компилятор gcc занимает довольно много места, поэтому первым делом нужно настроить на Omega загрузку с внешнего накопителя.

Пакеты, которые нам нужны, не включены в репозитории Onion, поэтому нам нужно обновить репозитории, которые проверяет утилита opkg. Откройте файл /etc/opkg/distfeeds.conf и раскомментируйте строки:

src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/base

src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/packages

Для получения дополнительной информации о репозиториях, которые использует Omega, взгляните на нашу статью об использовании opkg

Как только это будет сделано, мы можем приступить к установке gcc и утилиты make:

opkg update

opkg install gcc

opkg install make

Установка отладчика

При запуске программы на C/C ++, вы, скорее всего, захотите ее отладить. Для этого установите GDB:

opkg update

opkg install gdb

В Интернете доступно множество ресурсов, с руководствами по использованию GDB для отладки программ. Эти два руководства одни из лучших для начала:

  • Debugging Under Unix: gdb Tutorial
  • How to Debug using GDB

Компиляция программы на C

Теперь, когда установлен компилятор, попробуем использовать его. Создайте файл на вашем Omega с именем helloworld.c и заполните его С-кодом:

#include

 

int main()

{

    printf("Hello World! ");

    printf("We‘re running a C program on the Omega2! ");

    return 0;

}

Чтобы скомпилировать программу, выполните команду:

gcc helloworld.c -o helloworld

Это создаст helloworld, исполняемый бинарный файл, который является скомпилированной версией вашего C-кода! Давайте запустим его:

root@Omega-665D:~# ./helloworld

Hello World!

We‘re running a C program on the Omega2!

Потрясающе! Вы скомпилировали свою первую C-программу на Omega!

Пример программы

Посмотрите репозиторий c-example на GitHub, в котором находится C-программа и Makefile, которые можно скомпилировать на Omega. Подключитесь к Omega, установите git, скопируйте репозиторий c-example и запустите make, чтобы скомпилировать программу на C.

Результатом компиляции будет исполняемый бинарный файл gpioRead. Программа будет считывать и распечатывать входное значение на указанном GPIO-выводе раз в секунду в течение 20 секунд. Запустите его с помощью ./gpioRead.

Компиляция программы на C ++

Пакет gcc, который мы установили с помощью opkg, также включает в себя g ++ (компилятор C ++), поэтому можно компилировать программы и на C ++.

Процесс очень похож на компиляцию C-программы, за исключением нескольких ключевых отличий. Давайте создадим файл helloworld.cpp в Omega и наполним его следующим кодом:

#include

using namespace std;

 

int main() {

   cout << "Hello World!" << endl;

   cout << "Now we‘re running a C++ program on the Omega2" << endl;

   return 0;

}

 Скомпилируйте его с помощью следующей команды:

g ++ helloworld.cpp -o helloworld2

Будет создан исполняемый бинарный файл helloworld2, который является скомпилированной версией helloworld.cpp.

Запустим бинарный файл:

root@Omega-665D:~# ./helloworld2

Hello World!

Now we‘re running a C++ program on the Omega2

Идем далее

Компиляторы gcc и g ++ действительно мощные и настраиваемые. Использование утилиты make позволяет создавать и компилировать различные проекты на C/C++ с минимальными затратами времени.

В Интернете доступно множество ресурсов по этим темам, но лучше начать с этих:

  • Compiling C and C++ Programs
  • GCC and Make: Compiling, Linking and Building C/C++ Applications
footer shadow
Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

compacttool logoadaptive site

accepted payment systems

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2015 - 2024г https://compacttool.ru