我正在创建一组内核模块。每个模块都是它自己的项目。这些模块之一提供了许多子模块的接口。 IE。一个父模块具有导出,子模块具有导入。
由于正在编译的内核代码已经有一个 Module.symvers,因此我在编译和插入父模块时没有任何问题。但是,子模块包含来自父模块的头文件(描述导出)。我已经以这样的方式创建了标头,只需将其复制到子项目的包含目录中即可。我的目标是有一天这个父模块成为内核树的一部分。
插入子模块时,dmesg
抱怨未经验证的函数签名(不记得确切的错误消息)。为了解决这个问题我也复制 Module.symvers在将父级构建到子级的构建目录中时生成。
当复制 Module.symvers 有效时,Module.symvers 文件包含包含导出函数的构建模块的完整路径。因此,在 github/gitlab 上共享 Module.symvers 会给任何克隆该项目的人带来问题。
处理这种情况的最佳/首选方法是什么?