我将 FriendlyARM 与 linux 2.6.29 一起使用,并使用 ARM-Linux GCC 进行编译 4.3.2
当尝试使用 PF_PACKET 打开套接字时失败,错误号为 97,地址 协议(protocol)不支持的系列。
这是一个说明问题的示例程序 -
#include <stdio.h>
#include <sys/socket.h>
#include <netpacket/packet.h>
#include <net/ethernet.h>
//#include <linux/if_packet.h>
//#include <linux/if_ether.h>
#include <errno.h>
int main() {
int sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETHER_TYPE));
if (sockfd < 0)
perror("Can't open socket");
}
知道为什么会这样吗?
提前致谢
奥伦
编辑: 我尝试过的事情 -
确保我以 root 身份运行
在 linux 2.6.27.7-9-pae 和 intel 机器下编译,在它下工作正常 (gcc 4.4.1)
下面的帖子表明它与 linux 版本有关,但基于以上我认为它可能是其他原因。 link text
最佳答案
您的内核配置中是否定义了 CONFIG_PACKET?这是 AF_PACKET 所必需的。
关于c - ARM-linux4.3.2,无法打开PF_PACKET类型的socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3297005/