我写的内核扩展需要包含一个框架(DirectIO),所以我在目标属性的“链接库”部分添加了框架。然后我把它包含在主源文件中。
问题是,每当我尝试构建它时,都会出现此错误:
/Developer/usr/bin/ld_classic: incompatible flag -framework used (must specify "-dynamic" to be used)
我在Snow Leopard上使用XCode 3.2,为OSX i386构建。是否可以在.kext目标中包含.framework?
答案 0 :(得分:2)
在构建内核扩展时,我认为您不能与框架(Kernel.framework除外)或动态库链接。
您的代码将以管理员模式运行。 LD相关的东西在那个阶段基本上没有。
然后,您可以使用kext的plist文件(OSBundleLibraries)链接其他扩展名(/ System / Library / Extensions)。
请参阅Kernel Extension Programming Topics文档的“确定Kext依赖关系”。
可用的内核扩展中有很多与I / O相关的东西。也许你会找到相同的东西。