2015-02-06 1 views
0

У меня есть программа для пользовательского пространства (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_SOURCECFLAGS.

Кроме того, любые другие лучшие способы сделать это?

+0

Сначала вы говорите, что хотите использовать функции ядра в программе пользовательского пространства. Затем вы говорите о том, что похоже на использование функций пользовательского пространства в модуле ядра. Что он? –

+0

Поместите программу пространства пользователя в ядро, как библиотеку. Извините за путаницу. – WindChaser

ответ

0

Вам также понадобится; взгляните на страницы man man, например «man 9 printf». Список, который они перечисляют, включает вверху.

Обратите внимание, что вы пытаетесь что-то сделать действительно трудно. Возможно, существуют некоторые базовые функции (например, printf); другие отличаются полностью (например, malloc (9)), и большинство POSIX API просто не существует. Вы не сможете использовать открытые (2), сокет (2) или вилку (2).

 Смежные вопросы

  • Нет связанных вопросов^_^