Компиляция systrace дает "два или более типов данных в спецификаторах объявления"
Я пытался скомпилировать systrace (1.6g) на Ubuntu. Когда я использую libevent 2.0.16, я получаю следующую ошибку компиляции:
In file included from /usr/include/netdb.h:28,
from /usr/include/event2/util.h:63,
from /usr/include/evutil.h:37,
from /usr/include/event.h:57,
from systrace.c:67:
/usr/include/netinet/in.h:141: error: two or more data types in declaration specifiers
/usr/include/netinet/in.h:141: error: two or more data types in declaration specifiers
Это соответствующие строки в /usr/include/netinet/in.h:
/* Internet address. */
typedef uint32_t in_addr_t;
struct in_addr
{
in_addr_t s_addr;
};
Может ли кто-нибудь рассказать о том, что я могу изменить в netinet / in.h, чтобы он заработал?
1 ответ
Решение
Вы можете посмотреть в config.h
(создан путем запуска ./configure
) и найти строку
#define in_addr_t unsigned long
Закомментируйте (или удалите), и вы можете, по крайней мере, получить дальнейшую компиляцию этого явно неработающего пакета.
Просто предположение: поскольку systrace 1.6g довольно старая, может потребоваться использовать libevent 1.xy для его компиляции.
Вы можете загрузить текущий пакет libevent 1 здесь.