0

我想将一个.c文件编译成一个.o文件,以便在稍后的单独阶段我可以将它与其他文件链接以生成一个可加载的模块(.ko文件)。

我尝试遵循 Kbuilds 文档(此处为 2.4 ),但没有成功:

obj-m: myfile.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$PWD/ myfile.o

输出是:

 $ make
cc    -c -o myfile.o myfile.c
myfile.c:42:26: fatal error: linux/printk.h: No such file or         directory
 #include <linux/printk.h>
                          ^
compilation terminated.
<builtin>: recipe for target 'myfile.o' failed
make: *** [myfile.o] Error 1
4

1 回答 1

1

首先,由于您在这里对标头感到致命,因此首先包含所有必需的头文件

#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */

第二件事,Makefile目标应该是modules而不是单个.o文件

obj-m += myfile.o
all:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
于 2018-03-24T01:09:10.333 回答