boost.asio and pfring conflict
boost.asio and pfring conflict
我写了一个程序,使用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'
我该如何解决这个问题?
这不是boost和pfring之间的冲突。问题在这里解释:
/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头文件和pfring。如果没有,请更新它们。如果失败,请检查是否有旧的标头。如果是,请将其移除。在Ubuntu中,这可以从Computer Janitor应用程序中完成。如果所有其他操作都失败,请尝试卸载并重新安装pfringe。确保它是适合您的操作系统的版本!
linux头文件已损坏。在最新的ubuntu 11.10版本中,最新的内核没有旧的头文件,下面的程序无法编译。当我需要两个头文件中的部分时,这很烦人,比如net/if.h中的if_nametoindex()和linux/if_arp.h中的ARPHRD_ETHER-所以我所能做的就是从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的系统上不起作用。hmmm…
我忘记了一个宏,添加到CFLAGS-DHAVE_PCAP。问题解决了。感谢大家
相关文章:
- SDL_Renderer opengl conflict
- std type_traits conflict with Qt type_traits
- OpenCV 2.4.7 conflict with Qt 4.8.1 QImage
- C++/ASM - "Operand size conflict" , "Improper operand type"
- NDK conflict c/c++
- FreeImage and wxWidgets conflict?
- Conflict std::set and NTL::vec_ZZ
- boost.asio and pfring conflict
- QList takeLast() and removeLast() conflict
- unsigned long long conflict with uint64_t?
- 变量声明冲突导致编译器错误:"conflict with new declaration with '