У меня есть программа для пользовательского пространства (Capstone). Я хотел бы использовать его в ядре FreeBSD. Я считаю, что большинство из них имеют одинаковое имя функции, семантику и аргументы (в FreeBSD ядро printf
также называется printf
). Сначала я построил его как библиотеку libcapstone.a
и связал свою программу с ней. Поскольку файлы include различаются между пользовательским пространством Linux и ядром FreeBSD, библиотека не может найти такие символы, как sprintf
, memset
и vsnprintf
. Как я могу сделать эти символы (из ядра FreeBSD) видимыми для libcapstone.a
?Как связать функции ядра с программой пользовательского пространства?
Если непосредственно включая файлы заголовков, как <sys/systm.h>
в Linux в пользовательском пространстве исходного кода, ошибки было бы как undefined type u_int or u_char
, даже если добавить к -D_BSD_SOURCE
CFLAGS
.
Кроме того, любые другие лучшие способы сделать это?
Сначала вы говорите, что хотите использовать функции ядра в программе пользовательского пространства. Затем вы говорите о том, что похоже на использование функций пользовательского пространства в модуле ядра. Что он? –
Поместите программу пространства пользователя в ядро, как библиотеку. Извините за путаницу. – WindChaser