【发布时间】:2013-08-21 09:04:39
【问题描述】:
我有一个内核模块,我想在其中包含一个特殊文件。该文件是 ASM 文件。没什么特别的,但文件扩展名也是 gcc 无法识别的“.asm”。由于可移植性,我想避免任何重命名。 (它也用于另一个非 GNU 编译器。)
通常我的 makefile 看起来像这样:
obj-m := chardev.o
chardev-objs := chardev2.o file2.o asm_test.o
all:
make -C $(uClinux_dist_path) M=$$PWD modules
clean:
make -C $(uClinux_dist_path) M=$$PWD clean
asm_test 是有问题的,因为它被命名为“asm_test.asm”。 (如果命名为“asm_test.S”,它将起作用。)
在我的用户空间程序中,我可以通过插入以下规则来解决这个问题:
asm_test.o:
$(CC) -c -x assembler-with-cpp asm_test.asm
但这似乎在内核 makefile 中不起作用。
有人知道如何在内核 makefile 中创建特殊的文件规则吗?
顺便说一句,我正在使用交叉编译的 Blackfin uClinux dist。如果它有所作为。
【问题讨论】:
-
这也应该适用于内核 Makefile。你遇到了什么错误?
-
错误消息是:make[3]: *** 没有规则来制作目标
/home/mk/workspace/chardev/asm_test.o', needed by/home/mk/workspace/chardev/chardev.o'。停止。 -
问题的答案取决于他们为哪个汇编程序编写
-
该代码是为 VDSP 编写的,并且经过修改也可以被 bfin-elf、bfin-linux-uclibc 和 bfin-uclinux 编译。不过,我看不出这与 makefile 有什么关系。
标签: c assembly makefile linux-kernel