Я новичок в кросс-компиляции с использованием инструмента ptxdist. Я использую ptxdist версии 2013.03.0 и пытаюсь собрать snort 2.9.11.1 для arm cortex с ядром linux 4.9.47. Однако, когда я запускаю команду ptxdist prepare snort
, происходит сбой со следующей ошибкой:
checking for strlcat... no
checking for strerror... yes
checking for vswprintf... yes
checking for wprintf... yes
checking for snprintf... yes
checking size of char... 1
checking size of short... 2
checking size of int... 4
checking size of long int... 4
checking size of long long int... 8
checking size of unsigned int... 4
checking size of unsigned long int... 4
checking size of unsigned long long int... 8
checking for u_int8_t... yes
checking for u_int16_t... yes
checking for u_int32_t... yes
checking for u_int64_t... yes
checking for uint8_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for int8_t... yes
checking for int16_t... yes
checking for int32_t... yes
checking for int64_t... yes
checking for boolean... no
checking for INADDR_NONE... configure: error: in `/home/user/snort-2.9.11.1':
configure: error: cannot run test program while cross compiling
See `config.log' for more details.
Я проверил файл configure.in. Он пытается протестировать функцию inet_addr() с параметром INADDR_NONE, но терпит неудачу. Ниже приведено содержимое файла configure.in snort:
# In case INADDR_NONE is not defined (like on Solaris)
have_inaddr_none="no"
AC_MSG_CHECKING([for INADDR_NONE])
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
]],
[[
**if (inet_addr("10,5,2") == INADDR_NONE);**
return 0;
]])],
[have_inaddr_none="yes"],
[have_inaddr_none="no"])
AC_MSG_RESULT($have_inaddr_none)
if test "x$have_inaddr_none" = "xno"; then
AC_DEFINE([INADDR_NONE],[-1],[For INADDR_NONE definition])
fi
Является ли это случаем отсутствия заголовков ядра Linux в наборе инструментов для кросс-компиляции или настройке параметров? Я искал определение INADDR_NONE в исходном коде Linux 4.9.47 и нашел его в
...linux.4.9.47/include/uapi/linux/in.h
Может ли кто-нибудь помочь мне обойти эту ошибку?
Любая помощь будет оценена по достоинству.