Использование шаблона Makefile из состава KasperskyOS Community Edition
Для упрощения процесса подготовки загрузочного образа решения с использованием системы сборки make
вы можете использовать шаблон build.mk
из состава KasperskyOS Community Edition. Файл шаблона располагается по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/common/build.mk
Чтобы подготовить систему сборки make
с использованием шаблона build.mk
, в скрипте сборки Makefile
:
- Задайте значение переменной
targets
. В значении переменной перечислите через пробел все программы, входящие в решение. Указывать программыEinit
,kl.core.Core
необязательно, так как они обрабатываются отдельно. - Для каждой программы, указанной в переменной
targets
, задайте значения следующим переменным:<имя-программы>-objects
– список объектных файлов программы. Необходимо перечислить все объектные файлы.Имена объектных файлов получаются из имен исходных файлов сущности по следующим правилам:
*.c → *.o
*.idl → *.idl.o
*.cdl → *.cdl.o
*.edl → *.edl.o
<имя-программы>-ldflags
– список флагов, передаваемых компоновщику. Если сущность использует виртуальную файловую систему, необходимо передать флаги, указанные в переменнойLIBVFS_REMOTE
.<имя-программы>-base
– адрес загрузки программы в шестнадцатеричной системе. Если переменная не указана, адрес присваивается автоматически. Используйте эту переменную для отладки программы.
Этот же адрес передается отладчику с помощью следующей команды, которая может быть добавлена в .gdbinit-файл:
add-symbol-file <имя-программы> <адрес-загрузки-программы>
- Если раздел ROMFS должен содержать дополнительные файлы, задайте значение переменной
ROMFS-FILES
. В значении переменной перечислите файлы через пробел. Если вы используете виртуальную файловую систему, необходимо передать файл, указанный в переменнойVFS_ENTITY
. - Добавьте инструкцию импорта шаблона build.mk с помощью следующей команды:
include /opt/KasperskyOS-Community-Edition-<version>/common/build.mk
В файле шаблона build.mk
реализованы следующие цели сборки:
- sim (цель по умолчанию) – запуск загрузочного образа решения с помощью эмулятора QEMU.
При запуске эмулятор QEMU может осуществлять захват мыши, о чем будет написано в заголовке окна эмулятора.
- kos-image – сборка загрузочного образа решения для запуска на целевой аппаратной платформе.
- gdbsim – запуск загрузочного образа решения с возможностью отладки. После старта эмуляции QEMU ожидает старта отладчика. Для этого в другой командной строке необходимо вызвать цель gdb.
Убедитесь, что порт протокола TCP/IP 1234 открыт, например с помощью команды
netstat -anput
.Порт 1234 прослушивается программой gdbserver, которая используется для удаленной отладки приложений и входит в состав эмулятора QEMU.
При использовании отладчика gdb необходимо использовать аппаратные точки останова (hbreak). Эмулятор QEMU, который используется в примерах, запускается с ключом
-enable-kvm
, из-за чего использование обычных точек останова (break) невозможно. - gdb – запуск отладчика. После запуска отладчика для программ, которые требуется отлаживать, выполните следующие команды:
add-symbol-file <имя-программы> <адрес-загрузки-программы>
target remote localhost:1234
Пример
В этом примере используется система сборки 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
.