【发布时间】:2020-07-03 02:37:06
【问题描述】:
根据定义,如果所需的符号不存在,模块将不会加载(或抱怨)。 我想问一下是否有办法以某种方式克服以下情况:
我有模块 X,它使用模块 Y1 或 Y2 中的符号。在同一时间只加载 Y1 或 Y2 中的一个。就像,对于一个系统配置,我会加载 Y1,对于其他 Y2。 问题是,X 不会加载,因为它会抱怨其他(未加载的)Y 驱动程序缺少符号。
示例:
Y1导出符号:EXPORT_SYMBOL_GPL(y1);
Y2 导出符号:EXPORT_SYMBOL_GPL(y2);
X 会这样做:
if (config1)
y1(); // Available only when Y1 is loaded.
else
y2(); // Available only when Y2 is loaded.
在启动时,根据配置仅加载 Y1 或 Y2 之一。这一切都可以编译,但是在 config1 中加载 X 时会说:
Unknown symbol y2
有没有人知道这是否可以通过某种方式解决? 或者我只需要根据配置构建两个 X 模块 X1 和 X2?
非常感谢,非常感谢您的 cmets。
【问题讨论】:
标签: c linux-kernel