Сборка и запуск примера echo

Схема сборки примера echo выглядит следующим образом:

Сборка сущностей client и server

Перед сборкой сущностей client и server нужно обработать файлы статических описаний сервера с помощью компилятора NK:

nk-gen-c -I $SDK/sysroot-x86_64-pc-kos/include ping.idl

nk-gen-c -I $SDK/sysroot-x86_64-pc-kos/include ping.cdl

nk-gen-c -I $SDK/sysroot-x86_64-pc-kos/include server.edl

(Здесь и далее SDK=/opt/KasperskyOS-StarterKit-<version>.)

Компилятор NK создаст файлы ping.idl.h, ping.cdl.h и server.edl.h, а также файлы ping.idl.c, ping.cdl.c и server.edl.c. Эти файлы содержат транспортные методы и типы, используемые на сервере и на клиенте.

Сборка сущностей client и server:

x86_64-pc-kos-gcc -o client client.c ping.idl.c

x86_64-pc-kos-gcc -o server server.c ping.idl.c ping.cdl.c server.edl.c

Сборка инициализирующей сущности

Для сборки сущности einit потребуются файлы client.edl.h и server.edl.h.

Файл server.edl.h уже был создан на предыдущем шаге. Осталось лишь сгенерировать client.edl.h:

nk-gen-c -I $SDK/sysroot-x86_64-pc-kos/include client.edl

Код инициализирующей сущности (einit.c) генерируется с помощью утилиты einit:

einit -I $SDK/sysroot-x86_64-pc-kos/include -I . init.yaml -o einit.c

Сборка инициализирующей сущности einit:

x86_64-pc-kos-gcc -I . -o einit einit.c

Сборка образа решения

Теперь можно собрать образ решения, содержащий образ ядра KasperskyOS (kos-qemu), а также сущности client, server и einit:

makeimg --target=x86_64-pc-kos \

--sys-root=$SDK/sysroot-x86_64-pc-kos \

--with-toolchain=$SDK/toolchain \

--ldscript=$SDK/libexec/x86_64-pc-kos/kos-qemu.ld \

--img-src=$SDK/libexec/x86_64-pc-kos/kos-qemu \

--img-dst=kos-qemu-image \

client server

Сущность einit указывать не нужно, так как она будет включена в образ решения автоматически.

Запуск примера echo

Чтобы запустить собранный образ решения под QEMU, запустите команду:

qemu-system-x86_64 -m 1024 -serial stdio -kernel kos-qemu-image

Сборка и запуск примера echo с помощью скрипта build.sh, содержащего все приведенные выше команды

В начало