Компиляция 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, чтобы заставить его работать?


person vikhyat    schedule 06.01.2012    source источник


Ответы (1)


Вы можете заглянуть в config.h (созданный запуском ./configure) и найти строку

#define in_addr_t unsigned long

Закомментируйте (или удалите) его, и вы, по крайней мере, продвинетесь в компиляции этого явно неработающего пакета.


Просто предположение: поскольку systrace 1.6g устарел, возможно, потребуется использовать libevent 1.xy для его компиляции.

Вы можете загрузить текущий пакет libevent 1 здесь.

person alk    schedule 06.01.2012
comment
Использование libevent-1.4.14b-stable выдает это сообщение об ошибке при запуске make: pastie.org/3137269 . Тот же результат с libevent-1.0e. Я также пытался использовать gcc-3.4, когда я его использую, даже libevent 2.0.16 выдает то же сообщение об ошибке в пасти. Есть идеи, что происходит? - person vikhyat; 06.01.2012
comment
мой config.h содержит две из этих строк, и их удаление заставляет его работать - person gipi; 17.08.2013