繁体   English   中英

无法找到IOKit kext的符号链接

[英]Unable to find symbol links for IOKit kext

我按照Apple开发者网站上给出的教程进行了操作

在运行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_

在跑步:

kextfind -dsym __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_
nm -arch x86_64 /mach_kernel |grep __ZN9IOService15configureReportEP19IOReportChannelListjPvS2_

我得到0次点击,将输出汇总到一个文件 - 我意识到我想要的符号甚至不在这里。 即使我找到它们,我也不知道如何链接这些符号或找到相应的库到我的驱动程序。

任何帮助都会有帮助。 这是我第一次使用IOKit驱动程序,似乎没有人遇到此错误。

我正在运行OSX 10.8.4和Xcode 5 DP5

提前致谢 !

让我们通过c ++ filt运行缺少的符号来解码它们:

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

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

所以我们似乎正在寻找方法IOService::configureReportIOService::updateReport - 大概是在你的IOService子类中的vtable中使用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM