2

我正在编写的内核扩展需要包含一个框架(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 ?

4

1 回答 1

2

在构建内核扩展时,我认为您不能链接到框架(Kernel.framework 除外)或动态库。

您的代码将以主管模式运行。那个阶段基本没有LD相关的东西。

但是,您可以使用您的 kext 的 plist 文件 (OSBundleLibraries) 与其他扩展名 (/System/Library/Extensions) 链接。

请参阅内核扩展编程主题文档的“确定 Kext 依赖项” 。

可用的内核扩展中有很多与 I/O 相关的东西。也许你会找到一个等价物。

于 2011-11-24T00:05:16.657 回答