Створення простої програми “Hello, world!”
Це другий розділ серії статей “Hello, world!” для OpenWrt. На цьому етапі ви вже повинні були виконати такі дії:
- Підготували середовище розробки
- Налаштували та зібрали інструменти та крос-компілятор
- Додали директорію інструментів до змінної середовища `PATH`
Якщо ви пропустили один або кілька із зазначених кроків — поверніться до попередніх розділів.
Створення директорії з вихідним кодом і файлів
Хороша практика в розробці ПЗ — розділяти компоненти за відповідальністю, залишаючи лише мінімально необхідні точки взаємодії між ними. Цей підхід називається поділом обов'язків (separation of concerns).
Щоб дотримуватись цього принципу, ми помістимо вихідний код нашої програми в окрему директорію, що не пов’язана напряму з системою збірки OpenWrt. Назвемо директорію `helloworld` та створимо її в домашній директорії користувача розробника:
cd /home/buildbot mkdir helloworld cd helloworld
Тепер створимо єдиний файл з вихідним кодом для нашої програми — `helloworld.c`:
touch helloworld.c
Використовуючи ваш улюблений текстовий редактор, вставте в новостворений файл такий вміст:
- helloworld.c
#include <stdio.h> int main(void) { printf("\nHello, world!\n\n"); return 0; }
Компіляція, лінкування та тестування програми
Після створення файлу з кодом, перевіримо, чи можемо зібрати й запустити програму за допомогою звичайних інструментів компіляції, доступних у середовищі розробки:
gcc -c -o helloworld.o helloworld.c -Wall gcc -o helloworld helloworld.o
Перша команда компілює `helloworld.c` у об'єктний файл, а друга — створює звязки з потрібними бібліотеками та стартовими файлами, створюючи виконуваний файл `helloworld`.
Запустіть програму:
./helloworld
У відповідь має з’явитися текст: `Hello, world!`
Якщо ви не побачили цього повідомлення або виникли помилки — перевірте правильність вмісту файлу `helloworld.c`, а також наявність компілятора `gcc` у вашій системі.
Підсумок
У цьому розділі ми створили просту виконувану програму за допомогою вбудованих інструментів компіляції вашого середовища. Також ми торкнулися однієї з фундаментальних концепцій розробки ПЗ — поділу обов'язків.