конфликт boost.asio и pfring - PullRequest
       0

конфликт boost.asio и pfring

2 голосов
/ 14 января 2012

Я написал программу, использующую pfring и asio,

Моя программа вроде:

#include <boost/asio.hpp>
#include <pfring.h>

int main(void) {
    // ... 
    return 0;
}

Я получил ошибку:

In file included from /usr/local/include/pfring.h:46:0,
             from test.cpp:2:
/usr/include/linux/if.h:136:8: error: redefinition of 'struct ifmap'
/usr/include/net/if.h:112:8: error: previous definition of 'struct ifmap'
/usr/include/linux/if.h:170:8: error: redefinition of 'struct ifreq'
/usr/include/net/if.h:127:8: error: previous definition of 'struct ifreq'
/usr/include/linux/if.h:219:8: error: redefinition of 'struct ifconf'
/usr/include/net/if.h:177:8: error: previous definition of 'struct ifconf'

Как мне решить эту проблему?проблема?

Ответы [ 3 ]

1 голос
/ 20 января 2012

Это не конфликт между boost и pfringe.Проблема объясняется здесь:

/usr/include/linux/if.h:136:8: error: redefinition of 'struct ifmap'
/usr/include/net/if.h:112:8: error: previous definition of 'struct ifmap'

Похоже, что проблема вызвана конфликтом в заголовках Linux.Сначала проверьте, есть ли у вас последнее ядро ​​Linux, заголовки Linux и pfringe.Если нет, обновите их.Если это не помогло, проверьте, есть ли у вас старые заголовки.Если так, удалите их.В Ubuntu это можно сделать из приложения Computer Janitor.Если ничего не помогает, попробуйте удалить и переустановить pfringe.Убедитесь, что это соответствующая версия для вашей ОС!

0 голосов
/ 26 ноября 2012

Я забыл макрос, добавь в CFLAGS -DHAVE_PCAP. Это решено Спасибо всем

0 голосов
/ 22 января 2012

Заголовки Linux сломаны. В последнем выпуске Ubuntu 11.10 с последним ядром без старых заголовков следующая программа не может быть скомпилирована. Это довольно раздражает, когда мне нужны части из обоих заголовков, такие как if_nametoindex () из net / if.h и ARPHRD_ETHER из linux / if_arp.h - так что все, что я могу сделать, это скопировать / вставить нужные определения в мой источник из заголовки Linux!

#include <linux/if.h>
#include <net/if.h>

int main()
{
}

Ошибка:

In file included from x.c:1:0:
/usr/include/linux/if.h:178:19: error: field ‘ifru_addr’ has incomplete type
/usr/include/linux/if.h:179:19: error: field ‘ifru_dstaddr’ has incomplete type
/usr/include/linux/if.h:180:19: error: field ‘ifru_broadaddr’ has incomplete type
/usr/include/linux/if.h:181:19: error: field ‘ifru_netmask’ has incomplete type
/usr/include/linux/if.h:182:20: error: field ‘ifru_hwaddr’ has incomplete type
In file included from x.c:2:0:
/usr/include/net/if.h:45:5: error: expected identifier before numeric constant
/usr/include/net/if.h:112:8: error: redefinition of ‘struct ifmap’
/usr/include/linux/if.h:136:8: note: originally defined here
/usr/include/net/if.h:127:8: error: redefinition of ‘struct ifreq’
/usr/include/linux/if.h:170:8: note: originally defined here
/usr/include/net/if.h:177:8: error: redefinition of ‘struct ifconf’
/usr/include/linux/if.h:219:8: note: originally defined here

Редактировать: похоже, что эта ошибка была исправлена ​​в пакете ядра Linux 2.6.37-4.12:

https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/673073/comments/10

Но по какой-то причине он не работает на моей системе, основанной на Linux 3.0. Ммм ...

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