Я недавно скомпилированной собственного ядра, которое определяет семью нового адреса семьи/протокол под названием «AF_CUSTOM»проблемы компиляция простой программы C против пользовательского ядра Linux
Такие, включает в себя/Linux/socket.h в источнике моего ядра был изменилось, как показано здесь (а также для PF_CUSTOM):
#define AF_NFC 39 /* NFC sockets */
#define AF_CUSTOM 40 /* Custom sockets */
#define AF_MAX 41 /* For now.. */
Я планирую реализовать AF_CUSTOM, но как быстро проверить вменяемость, я решил изменить типичный пример программы с гнезда и посмотреть, если заменить «сокет (AF_INET , SOCK_STREAM, 0) "с" socket (AF_CUSTOM, SOCK_STREAM, 0) "будет компилироваться, но это не так. У меня возникла следующая ошибка при компиляции с помощью gcc: 'AF_CUSTOM' undeclared
Я предположил, что он, по крайней мере, скомпилируется, потому что AF_CUSTOM должен быть определен в текущем ядре.
Проблема, как я вижу, заключается в том, что gcc использует заголовки ядра по умолчанию для разрешения «#include <sys/socket.h>», а не заголовки, соответствующие выполняемому в настоящее время ядру. Я попытался использовать оба параметра -I и -системы для gcc, чтобы направить его на путь, по которому Ubuntu помещает заголовки ядра для других ядер, поскольку они, похоже, были важны из моего исследования Google, но они не помогли.
Мой вопрос: Как я могу скомпилировать программу C для заголовков для текущего исполняемого ядра, а не для заголовков ядра по умолчанию.
Я попытался это: gcc -isystem /usr/src/linux-headers-3.8.8-custom.5/ sendOnCustom.c -o sendOnCustom
FYI, составленный с использованием косметики kpkg. Кроме того, это мой первый вопрос, я надеюсь, что это понятно.
Is/usr/src/linux символическая ссылка? – James
Вы имеете в виду /usr/src/linux-headers-3.8.8-custom.5/? Это не символическая ссылка, а только каталог. –