gpt4 book ai didi

linux-kernel - 将内核模块与静态库链接

转载 作者:行者123 更新时间:2023-12-04 05:11:49 26 4
gpt4 key购买 nike

我正在尝试将我的内核模块与外部静态库链接,如下所示:

obj-m += my_prog.o
my_prog-objs := some/path/lib.a
# all the standard targets...

出于某种原因,上面的 Makefile 根本不编译 my_prog.c,并且生成的模块不包含它的代码。当然,如果我删除 my_prog-objs线, my_prog.c被编译。

Makefile 中的这种方法有什么问题?

最佳答案

您必须创建一个合成名称以及源文件及其对象名称。您不能使用 my_prog.o直接,因为有从源头制作的规则。这是一个示例,

 obj-m += full.o
full-src := my_prog.c
full-objs := $(full-src:.c=.o) lib.o # yes, make it an object.
仅某些特殊目录支持库。您的对象应命名为 lib.o_shipped并放在同一个目录下。因此,您需要获取外部库并将其作为已发布的版本在本地提供。您需要两个目标文件;一个是您编译的“C”代码/驱动程序,另一个是与库链接在一起的。

以上与 2.6.36 kbuild 基础结构有关。当前文档位于 modules.rst section 3.3 Binary Blobs .我认为上述技术仍然适用于库,而不仅仅是对象。

关于linux-kernel - 将内核模块与静态库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com