Заголовки 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. Ммм ...