小狮子& 2022-01-27 09:35 采纳率: 100%
浏览 15
已结题

Makefile内核模块编译

问题遇到的现象和发生背景

1.使用一般模式编写的Makefile文件可以生成目标文件。
2.使用Makefile的函数编写的Makefile在执行后没有生成目标文件,也没有报错。

问题相关代码,请勿粘贴截图

源码文件: list.c

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

static  int  __init   function_one_init(void) 
{
    printk("hello hero\n");
    return 0;
}

static  void  __exit  function_one_exit(void)
{
    printk("module  exit...\n");
}

module_init(function_one_init);
module_exit(function_one_exit);
MODULE_LICENSE("GPL");

正常的Makefile文件,可以编译生成目标文件

obj-m+= list.o
CURRENT_PATH=$(shell pwd)
KERNEL_PATH=/lib/modules/$(uname -r) /build
all:
  make -C $(KERNEL_PATH)  M=$(CURRENT_PATH)  modules
clean:
  make -C $(KERNEL_PATH)  M=$(CURRENT_PATH) clean

使用Makefile函数的Makefile,不报错,也没有生成目标文件

SRCS=$(wildcard *.c)
obj-m +=$(SRCS:.c=.o)
CURRENT_PATH=$(shell pwd)
KERNEL_PATH=/lib/modules/$(shell  uname -r )/build
all:
  @echo $(SRCS)
  @echo $(obj-m)
  make  -C $(KERNEL_PATH)  M=$(CURRENT_PATH)  modules
clean:
  make  -C $(KERNEL_PATH)  M=$(CURRENT_PATH)  clean
运行结果及报错内容

可以执行,但是没有达到预期结果,期待跟普通的Makefile一样生成list.ko文件

我的解答思路和尝试过的方法

在Makefile中输出wildcard替换后的变量名也是正常的,在Makefile中手动加入
obj-m=list.o
也可以编译出目标文件。

我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 2月4日
    • 创建了问题 1月27日

    悬赏问题

    • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
    • ¥15 安装quartus II18.1时弹出此error,怎么解决?
    • ¥15 keil官网下载psn序列号在哪
    • ¥15 想用adb命令做一个通话软件,播放录音
    • ¥30 Pytorch深度学习服务器跑不通问题解决?
    • ¥15 部分客户订单定位有误的问题
    • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
    • ¥15 Bug traq 数据包 大概什么价
    • ¥15 在anaconda上pytorch和paddle paddle下载报错
    • ¥25 自动填写QQ腾讯文档收集表