我最近正在为osx 10.9编写一个内核模块,发现nm工具未定义我编译的最终二进制文件中的每个符号。

通过在构 build 置中指定标志如何完成?我的意思是,当您构建用户模式应用程序时,如果符号未解析,则无法正确链接。我在构建kext二进制文件的命令行中找不到任何相关标志。

只是出于好奇,这个标志告诉链接器任何 undefined symbol 都可以吗?我知道--unresolved-symbols标志,但是在构建命令行中找不到。

此外,如何直接链接到mach_kernel?因为我刚刚看到了osx 10.5的驱动程序,它链接到男子气概。还是只有过去有可能?

最佳答案

为kext完成此操作的标志是-Xlinker -kext,它还包括选项-nostdlib,因为基本标准库对kext不可用。这些规则告诉OSX链接器,它不需要解析结果二进制文件中的所有符号。

不要直接链接到内核,而是依靠 undefined symbol 在kext加载时(而不是在其他时间)连接起来。

关于c++ - Kext编译良好, undefined symbol ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26155005/

10-16 17:02