Linux多源文件Makefile模版

编译内核模块时,一个源文件的Makefile模板到处都是:

  1. obj-m := module.o
  2. KERNELDIR := /lib/modules/$(shell uname -r)/build
  3. PWD := $(shell pwd)
  4. default:
  5. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
  6. clean:
  7. rm -f *.o *.ko *.mod.c modules.* Module.*
因为我不是内核工程师,所以偶尔写个内核模块,一个源文件也就够了。近日有了多文件的需求,尝试了多次,才整理出正确的多文件下内核模块的Makefile模板。

  1. obj-m := module.o
  2. module-objs += file1.o
  3. module-objs += file2.o
  4. module-objs += file3.o
  5. KERNELDIR := /lib/modules/$(shell uname -r)/build
  6. PWD := $(shell pwd)
  7. default:
  8. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
  9. clean:
  10. rm -f *.o *.ko *.mod.c modules.* Module.*
注意,file1,file2,file3不能和module重名哦。

编译选项定义:
-C 到指定目录下读取Makefile
M 执行当前目录下的Makefile
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个常见的Linux C Makefile模板: ```makefile # 定义编译器和编译选项 CC = gcc CFLAGS = -Wall -Wextra # 定义目标文件和依赖文件 TARGET = app SRCS = main.c function1.c function2.c OBJS = $(SRCS:.c=.o) DEPS = $(SRCS:.c=.d) # 默认目标 all: $(TARGET) # 生成可执行文件 $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ # 生成目标文件 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # 生成依赖文件 %.d: %.c $(CC) $(CFLAGS) -MM $< > $@ # 包含依赖文件 -include $(DEPS) # 清除可执行文件和目标文件 clean: rm -f $(TARGET) $(OBJS) $(DEPS) .PHONY: clean ``` 这个Makefile模板中包含了几个常见的部分: 1. 定义了编译器和编译选项,可以根据需要进行修改。 2. 定义了目标文件和依赖文件,其中目标文件即可执行文件,依赖文件用于处理文件之间的依赖关系。 3. 默认目标是生成可执行文件,依赖于目标文件和依赖文件。 4. 生成可执行文件的规则中,使用了变量和自动化变量,使得Makefile更加灵活和易于维护。 5. 添加了生成依赖文件的规则,利用gcc的-MM选项可以自动生成依赖关系。 6. 使用了"-include"指令来包含依赖文件,以确保Makefile在第一次构建时也能正确处理依赖关系。 通过这个Makefile模板,你可以在Linux环境下快速构建和编译C项目。你只需要将源文件(main.c, function1.c, function2.c等)添加到SRCS变量中,然后运行"make"命令即可生成可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值