Использование шаблона Makefile из состава KasperskyOS Community Edition

Для упрощения процесса подготовки загрузочного образа решения с использованием системы сборки make вы можете использовать шаблон build.mk из состава KasperskyOS Community Edition. Файл шаблона располагается по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/examples/common/build.mk

Чтобы подготовить систему сборки make с использованием шаблона build.mk, в скрипте сборки Makefile:

  1. Задайте значение переменной targets. В значении переменной перечислите через пробел все сущности, входящие в решение. Указывать сущности Einit, kl.core.Core, kl.VfsEntity необязательно, так как они обрабатываются отдельно.
  2. Для каждой сущности, указанной в переменной targets, задайте значения следующим переменным:
    • <имя-сущности>-objects – список объектных файлов сущности. Необходимо перечислить все объектные файлы.

      Имена объектных файлов получаются из имен исходных файлов сущности по следующим правилам:

      • *.c → *.o
      • *.idl → *.idl.o
      • *.cdl → *.cdl.o
      • *.edl → *.edl.o
    • <имя-сущности>-ldflags – список флагов, передаваемых компоновщику. Если сущность использует виртуальную файловую систему, необходимо передать флаги, указанные в переменной LIBVFS_REMOTE.
    • <имя-сущности>-base – адрес загрузки сущности в шестнадцатеричной системе. Если переменная не указана, адрес присваивается автоматически. Используйте эту переменную для отладки сущности.

    Этот же адрес передается отладчику с помощью следующей команды, которая может быть добавлена в .gdbinit-файл:

    add-symbol-file <имя-сущности> <адрес-загрузки-сущности>

  3. Если раздел ROMFS должен содержать дополнительные файлы, задайте значение переменной ROMFS-FILES. В значении переменной перечислите файлы через пробел. Если вы используете виртуальную файловую систему, необходимо передать файл, указанный в переменной VFS_ENTITY.
  4. Добавьте инструкцию импорта шаблона build.mk с помощью следующей команды:

    include /opt/KasperskyOS-Community-Edition-<version>/examples/common/build.mk

В файле шаблона build.mk реализованы следующие цели сборки:

Пример

В этом примере используется система сборки make. Помимо действий, выполняемых в шаблоне build.mk, в скрипте сборки необходимо указать сущность hello и список объектных файлов этой сущности. Адрес загрузки указывается для целей отладки решения.

Makefile

# Список сущностей для сборки.

targets = hello

# Список объектных файлов сущности "hello".

hello-objects = hello.o hello.edl.o

# Адрес загрузки сущности "hello" (в hex).

hello-base = 800000

# Включить шаблон с общими правилами сборки.

include ../common/build.mk

Чтобы запустить систему сборки make, выполните команду make hello.

Чтобы запустить пример hello, находясь в директории /opt/KasperskyOS-Community-Edition-<version>/examples/hello, выполните команду make.

В начало