2013-03-13 21 views
10

zainstalowaniu biblioteki pcap na moim systemie linux ale po tym go dostaję błędyC PCAP biblioteczne nieznanych typów błędów

/usr/include/pcap/bpf.h:88:1: error: unknown type name ‘u_int’ 
/usr/include/pcap/bpf.h:108:2: error: unknown type name ‘u_int’ 
/usr/include/pcap/bpf.h:1260:2: error: unknown type name ‘u_short’ 
/usr/include/pcap/bpf.h:1261:2: error: unknown type name ‘u_char’ 
/usr/include/pcap/bpf.h:1262:2: error: unknown type name ‘u_char’ 
In file included from ../src/test.c:1:0: 
/usr/include/pcap/pcap.h:125:2: error: unknown type name ‘u_short’ 
/usr/include/pcap/pcap.h:126:2: error: unknown type name ‘u_short’ 
/usr/include/pcap/pcap.h:171:2: error: unknown type name ‘u_int’ 
... 
make: *** [src/test.o] Error 1 

włączyłem

#include <pcap/pcap.h> 
#include <sys/types.h> 
#include <pcap-bpf.h> 

w programie, co mi brakuje ?

Odpowiedz

11

upewnij się zrobić NIE określić którykolwiek:

  • __STRICT_ANSI__
  • _ISOC99_SOURCE
  • _POSIX_SOURCE
  • _POSIX_C_SOURCE
  • _XOPEN_SOURCE
  • _SVID_SOURCE

podczas budowania programu; mogą uniemożliwić zdefiniowanie typów danych BSD, takich jak te, na które kompiluje się skarga.

+0

Nie Nie po prostu skompilowałem go za pomocą "gcc -std = c99 test.c -o test" – wasp256

+3

Właściwie, tak * udało ci się * zdefiniować przynajmniej jedną z nich, podając '-std = c99' . Strona podręcznika GCC mówi, że '-std =' ma taki sam efekt jak '-ansi', a' -ansi' definiuje '__STRICT_ANSI__'. '-std = c99' może definiować' _ISOC99_SOURCE' oraz, zamiast "__STRICT_ANSI__". '-std = c99' oznacza, że ​​chcesz, aby twój kod był kompilowany jako ścisły ISO C99, co oznacza, że ​​nie może używać żadnych funkcji spoza ISO C99 - a libpcap nie jest w ISO C99, więc .... Jeśli jesteś próbując korzystać z funkcji C99 i nie są one obsługiwane domyślnie, wypróbuj '-std = gnu99'. –

8

spróbuj dodać

 -D_BSD_SOURCE 

az do CFLAG do swojej Makefile.

+3

Alternatywnie, rozważ "-D_GNU_SOURCE". Umożliwi to korzystanie z funkcji pochodzących z BSD bez łączenia biblioteki kompatybilności z BSD. Zobacz dokumentację [Dokumentacja GNU na temat makr testów funkcji] (https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html), aby uzyskać więcej informacji na temat różnych wartości, które można określić i kiedy musisz użyć biblioteki zgodności BSD. –