Macos 找不到IOKit kext的符号链接

Macos 找不到IOKit kext的符号链接,macos,driver,iokit,kernel-extension,Macos,Driver,Iokit,Kernel Extension,我跟着 在运行kextlib时,它显示了2个未定义的符号,以下是输出: sudo kextlibs -xml -undef IOKitTest1.kext/ <key>OSBundleLibraries</key> <dict> <key>com.apple.kpi.iokit</key> <string>12.4</string> <

我跟着

在运行
kextlib
时,它显示了2个未定义的符号,以下是输出:

    sudo kextlibs -xml -undef IOKitTest1.kext/
    <key>OSBundleLibraries</key>
    <dict>
        <key>com.apple.kpi.iokit</key>
        <string>12.4</string>
        <key>com.apple.kpi.libkern</key>
        <string>12.4</string>
    </dict>

For x86_64:
    2 symbols not found in any library kext:
    __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_
    __ZN9IOService12updateReportEP19IOReportChannelListjPvS2_
通过管道将输出传输到一个文件,我得到了0次点击——我意识到我要寻找的符号甚至不在这里。即使我找到了它们,我也不知道如何将这些符号链接到我的驱动程序或找到相应的库

任何帮助都会有帮助。这是我第一次研究IOKit驱动程序,似乎没有人会出现这种错误

我正在运行OSX 10.8.4和Xcode 5 DP5


提前谢谢

让我们通过c++filt运行缺少的符号以对其进行demangle:

$ echo __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ | c++filt 
IOService::configureReport(IOReportChannelList*, unsigned int, void*, void*)

$ echo __ZN9IOService12updateReportEP19IOReportChannelListjPvS2_ | c++filt
IOService::updateReport(IOReportChannelList*, unsigned int, void*, void*)
因此,我们似乎在寻找方法
IOService::configureReport
IOService::updateReport
——可能用于IOService子类中的vtable

现在,这些方法在10.8或更早版本上并不存在,而且10.9/Xcode5仍处于封闭测试阶段,所以你不能在这样的公共论坛上讨论它们。但是,我怀疑您使用的是10.9 SDK,这可能是预发布代码中的一个bug。确保您正在运行最新的SDK(cough DP6 cough),如果问题仍然存在,(a)在苹果beta论坛上询问,和/或(b)向苹果提交错误报告,和/或(c)在紧急情况下提交(付费)DTS请求

$ echo __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_ | c++filt 
IOService::configureReport(IOReportChannelList*, unsigned int, void*, void*)

$ echo __ZN9IOService12updateReportEP19IOReportChannelListjPvS2_ | c++filt
IOService::updateReport(IOReportChannelList*, unsigned int, void*, void*)