фатальная ошибка: netlink / genl / genl.h: нет такого файла или каталога

10

Я кросс-компиляции hostapd для openwrt. Я получаю fatal error: netlink/genl/genl.h: No such file or directory. У меня уже установлена ​​библиотека libnl-3.2.24. Если я напрямую компилирую (не кросс-компилирую), то hostapd компилируется правильно без каких-либо ошибок.

Рафал
источник
2
Для какой арки?
AB

Ответы:

23

Вы можете найти правильный пакет с помощью этой команды:

apt-file search /netlink/genl/genl.h

В моем случае вывод:

libnl-3-dev: /usr/include/libnl3/netlink/genl/genl.h

Это означает, что я должен установить пакет libnl-3-dev:

sudo apt-get install libnl-3-dev

А тебе нужно libnl-genl-3-dev

sudo apt-get install libnl-genl-3-dev

Затем откройте configфайл:

nano hostap/hostapd/.config

и раскомментируйте строку:

CONFIG_LIBNL32=y

Начните makeснова.

AB
источник
«Если я напрямую компилирую (а не кросс-компилирую), то hostapd компилируется правильно без каких-либо ошибок». - Я сомневаюсь, что у ОП нет этого пакета.
Муру
@muru Теперь все работает, только что протестировано.
AB
вы кросс-компилируете?
Муру
@muru хм, кросс-компиляции нет. Для какой архитектуры?
AB
@muru например, это работает:make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
AB
0

Файл заголовка .../netlink/genl/genl.hнаходится в libnl-3-devпакете

Установите его, используя:

sudo apt-get install libnl-3-dev
Maythux
источник
«Если я напрямую компилирую (а не кросс-компилирую), то hostapd компилируется правильно без каких-либо ошибок». - Я сомневаюсь, что у ОП нет этого пакета.
Муру
0

Убедитесь, что ваш кросс-компилятор имеет набор инструментов libnl и libnl-genl. Также убедитесь, что ваш проект может найти библиотеки, например, используя правильные каталоги include и lib при сборке. Я часто заканчиваю указывать их, используя CFLAGS = "- I $ (STAGING_DIR) / usr / include" и LDFLAGS = "- L $ (STAGING_DIR) / usr / lib"

Андреас Сёвик Нильсен
источник