未知符号x(错误0)

时间:2017-09-26 18:33:36

标签: export symbols

我正在尝试将一个变量从RBT驱动程序模块导出到RBprobe驱动程序模块,并在构建它们时看到以下警告:

未知符号x(错误0)

我在RBT Driver模块中使用EXPORT_SYMBOL函数导出变量'x'。现在在RBprobe驱动程序中,我使用“extern”声明了'x'。 有了这个我应该能够使用这个符号。但我仍然遇到上述错误。

我的理解:

当我们构建内核模块时,会生成一个符号表文件(Module.symvers),其中包含来自内核版本的所有导出符号的列表。 因为,我正在使用单个make文件一起构建两个内核模块(按顺序rbt530_dev.o RBprobe.o)我想RBprobe的Module.symvers正在替换从rbt530_dev.o build生成的模块。 因此导出的符号不会出现在RBprobe驱动程序中。

我尝试过的事情:

  1. 创建两个单独的目录并分别构建RBT驱动程序模块。然后将RBT模块的Module.symvers复制粘贴到RBprobe。现在我构建了模块,它仍然显示相同的警告。 没有编译错误。

  2. 使用make变量KBUILD_EXTRA_SYMBOLS,但这对我不利。

  3. 我在文档中读到另一种方法来解决这个问题,其中我们构建了一个顶级kbuild文件,但我正在努力构建相同的文件。

    如果有人知道解决此问题的更好方法,请告诉我。此外,如果我出错或丢失任何东西,请告诉我。

0 个答案:

没有答案