Поскольку Omega - это компьютер с Linux, он поддерживает программы на C и C++. По умолчанию gcc (компилятор C) и g ++ (компилятор C ++) не установлены. Здесь будут рассмотрены ограничения при компиляции программ на C и C ++, а также инструкции о том как установить и использовать компиляторы.
Существуют два основных ограничения при компиляции программ на C и C ++: скорость обработки и доступность header-файлов библиотек.
Процессор Omega оптимизирован под малые энергопотребление и тепловыделение, и значит он не такой мощный, как среднестатистический современный ноутбук. Поэтому компилирование больших программ займет некоторое время.
При сборке ОС Omega header-файлы библиотек, не относящихся к стандартным, не включаются для экономии места. Если вы посмотрите на /usr/lib и сравните его с /usr/include, где хранятся header-файлы, вы увидите несоответствие: некоторые объекты библиотеки не имеют соответствующих header-файлов!
Включены библиотеки:
Чтобы использовать библиотеку в программе, нужно включить 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 для отладки программ. Эти два руководства одни из лучших для начала:
Теперь, когда установлен компилятор, попробуем использовать его. Создайте файл на вашем 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.
Пакет 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++ с минимальными затратами времени.
В Интернете доступно множество ресурсов по этим темам, но лучше начать с этих:
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru