使用静态库(.a)编译内核模块

使用静态库(.a)编译内核模块

欢迎。

我有这样的问题,可能是钣金,但不幸的是我无法解决它。我可能已经搜索了整个互联网,但不幸的是,我没有找到解决我的问题的方法。

嗯,我正在为嵌入式设备编写内核。到目前为止,内核编译没有任何问题,直到补丁发布。

嗯,补丁更新了其中一个驱动程序,并在 Makefile 中添加了一个扩展名为 .a 的静态库

不幸的是,我在编译过程中遇到错误。

现在还有更多。好吧,应用于文件“/drivers/video/fbdev/mxc/mxc_hdmi.c”的补丁通过引用两个名为 kill_firmiware 和 get_firmware 的函数完成了代码。

Patch 还通过在 Makefile 文件中添加静态库来编辑该文件。 -obj-$(CONFIG_FB_MXC_HDMI) += mxc_hdmi.o +obj-$(CONFIG_FB_MXC_HDMI) += mxc_hdmi.o libfw.a (即在行尾添加 libfw.a)

我在编译期间看到此消息 scripts/Makefile.build:298: target 'drivers/video/fbdev/mxc/libfw.a' doesn't match the target pattern Building modules, stage 2. MODPOST 274 modules ERROR: "kill_firmware" [drivers/video/fbdev/mxc/mxc_hdmi.ko] undefined! ERROR: "get_firmware" [drivers/video/fbdev/mxc/mxc_hdmi.ko] undefined! scripts/Makefile.modpost:91: recipe for target '__modpost' failed make[1]: *** [__modpost] Error 1 Makefile:1205: recipe for target 'modules' failed

我将包含库的文件上传到两个修改后的文件所在的公共目录,即 Makefile 和驱动程序 mxc_hdmi.c。

不幸的是,我不知道我是否正确放置了 libfw.a 文件 :(。我知道如果我删除这个文件,我会收到一条消息,提示根本找不到库文件(所以这里可能没问题)

libfw.a 库无法工作,因为它是为另一个 Linux 版本编译的吗?但针对的是同一架构。甚至在同一个处理器上。

请帮忙。:) 因为我在解决这个问题时遇到困难,不幸的是我不知道下一步该怎么做。

答案1

您可以将 libfw.a 重命名为 libfw.a_shipped 并再次编译。

相关内容