编译安卓4.0系统linux内核时,报错:
CC security/commoncap.o
security/commoncap.c: In function 'cap_capable':
security/commoncap.c:90: error: 'AID_NET_RAW' undeclared (first use in this function)
security/commoncap.c:90: error: (Each undeclared identifier is reported only once
security/commoncap.c:90: error: for each function it appears in.)
security/commoncap.c:92: error: 'AID_NET_ADMIN' undeclared (first use in this function)
make[1]: *** [security/commoncap.o] Error 1
make: *** [security] Error 2
make: *** Waiting for unfinished jobs....
经过查找,发现定义:
/include/linux/android_aid.h:23:#define AID_NET_RAW 3004
于是打开源文件,查看该文件是否包含,看到如下部分:
#ifdef CONFIG_ANDROID_PARANOID_NETWORK
#include <linux/android_aid.h>
#endif
因此,那原因就是没有定义
CONFIG_ANDROID_PARANOID_NETWORK
进一步搜索发现该定义在net/Kconfig:
config ANDROID_PARANOID_NETWORK
bool "Only allow certain groups to create sockets"
default y
help
none
终于找到问题所在了,刚开始还纳闷为什么以前编译没有错误,选中该项,问题解决。
android在建立网络连接会进行身份验证,确定是否有权限进行该项操作,因此此处必须加上。