Для упрощения процесса подготовки загрузочного образа решения с использованием системы сборки 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-FILES
. В значении переменной перечислите файлы через пробел. Если вы используете виртуальную файловую систему, необходимо передать файл, указанный в переменной VFS_ENTITY
.include /opt/KasperskyOS-Community-Edition-<version>/common/build.mk
В файле шаблона build.mk
реализованы следующие цели сборки:
При запуске эмулятор QEMU может осуществлять захват мыши, о чем будет написано в заголовке окна эмулятора.
Убедитесь, что порт протокола TCP/IP 1234 открыт, например с помощью команды netstat -anput
.
Порт 1234 прослушивается программой gdbserver, которая используется для удаленной отладки приложений и входит в состав эмулятора QEMU.
При использовании отладчика gdb необходимо использовать аппаратные точки останова (hbreak). Эмулятор QEMU, который используется в примерах, запускается с ключом -enable-kvm
, из-за чего использование обычных точек останова (break) невозможно.
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
.