我正在为OS X编写一个kext驱动程序,并希望使用库libpcap.dylib
中的函数。 Libpcap.dylib位于OS X上的/ usr / lib中。它可以在内核空间中使用吗?如何使用Xcode从kext中使用libpcap.dylib?
我设法编译 - (-lpcap apears作为链接选项)但是:
"unexpected dylib"
上收到警告。很明显,某种程度上是错位的。我知道类似的问题Linking Dylibs in Kexts?,但想知道是否有人在kext上使用过libpcap。
答案 0 :(得分:2)
如Linking Dylibs in Kexts?中所述,不可能通过内核扩展将dylib加载到内核中。
您没有提到您想要实现的目标,因此很难知道哪些替代方案与您相关。我建议阅读[网络内核扩展] [1],看看他们所涵盖的技术之一是否可以用来代替pcap。或者,您可以从用户空间程序中使用pcap,并通过内核扩展与它进行通信。
答案 1 :(得分:1)
WinPcap同时具有用户域和内核模式组件,因为Windows内核不提供必要的内核模式组件。
在UN * X系统上 - 例如,在OS X上 - 内核模式组件是操作系统的一部分,而libpcap只包含用户模式代码。
WinPcap内核模式代码的等效,在* BSD和OS X中是BPF,您将无法从kext中使用它。此外,BPF没有相当于发送队列的东西来进行数据包的同步传输 - 你可以发送数据包,但只是立即将数据包注入网络堆栈 - 所以既不使用你的kext的libpcap,也不使用原始的BPF你的kext,可以帮助你满足你的时间需求。