При использовании makefile заголовок linux найден, но при вызове функций из заголовка он говорит, что они неявно объявлены - PullRequest
0 голосов
/ 25 апреля 2019

Я пишу модуль ядра и начал изучать сокеты. Я смог включить другие заголовки Linux, использовать их функции, и make-файл будет в порядке. Когда я включаю linux / socket.h, компилятор может найти файл, но если я вызываю socket() или connect() или что-то подобное, он говорит, что они неявно объявлены. Как бы я мог это исправить?

Я использовал cat, чтобы посмотреть в файл, чтобы убедиться, что он правильный, и это так. Я пытался просто жестко запрограммировать местоположение

/ USR / SRC / Linux-Headers-4.18.0-17-родовое / Linux / socket.h

Я также пытался использовать socket.h из linux-headers-4.18.0-17, но это также не работает.

одна из ошибок: ошибка: неявное объявление функции «сокет»; Вы имели в виду «Sget»? [-Werror = неявная функция - декларация]

1 Ответ

1 голос
/ 25 апреля 2019

Поскольку это не socket(), это sys_socket(), и вам также нужен заголовочный файл, содержащий системные вызовы. Этот содержит только структуры и константы. Заголовочный файл с самой функцией: linux/syscalls.h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...