msgstr "ошибка: в структуре udphdr нет члена с именем" источник "" ... а? - PullRequest
0 голосов
/ 18 октября 2008

Я пытаюсь скомпилировать программу с именем ngrep, и когда я запустил configure, казалось, все идет хорошо, но когда я запускаю make, я получаю:

ngrep.c: In function ‘process’:
ngrep.c:544: error: ‘struct udphdr’ has no member named ‘source’
ngrep.c:545: error: ‘struct udphdr’ has no member named ‘dest’
make: *** [ngrep.o] Error 1                              

Что это значит и как мне это исправить? Нет более ранних предупреждений или ошибок, которые указывают на корень проблемы.

Ответы [ 2 ]

2 голосов
/ 18 октября 2008

Нашел проблему:

#ifdef HAVE_DUMB_UDPHDR
                printf("%s:%d -", inet_ntoa(ip_packet->ip_src), ntohs(udp->source));
                printf("> %s:%d", inet_ntoa(ip_packet->ip_dst), ntohs(udp->dest));
#else
                printf("%s:%d -", inet_ntoa(ip_packet->ip_src), ntohs(udp->uh_sport));
                printf("> %s:%d", inet_ntoa(ip_packet->ip_dst), ntohs(udp->uh_dport));
#endif

Очевидно, что в этом тесте в configure есть ошибка, и она считает, что в моей системе есть "тупой" udphdr, хотя его нет. Изменение первой строки на «#if 0» устраняет проблему.

1 голос
/ 18 октября 2008

Ну, есть структура, называемая udphdr (вероятно, сокращение от заголовка udp). И в какой-то части программы предполагается, что структура имеет источник и назначение членов, которых у нее нет.

Посмотрите на файл ngrep.c строки 544 и 545, чтобы найти ошибочные строки.

Возможные причины:

  • ошибка типа имя типа.
  • структура не полностью определена.
  • используя неправильную структуру.

Редактировать: вероятно, связанная проблема: http://ubuntuforums.org/showthread.php?t=371871

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...