首页 > 解决方案 > Linux内核模块makefile中的特殊文件编译-“停止需要.o”错误

问题描述

我有一个内核模块,我想在其中包含一个特殊文件。该文件是 ASM 文件。没有什么特别的,但它不起作用。制作错误是:

make[2]: *** No rule to make target '/home/idou/Documents/badpervisor/driver/cpuid_available.o', needed by '/home/idou/Documents/badpervisor/hypervisor.o'.  Stop.

构建:

obj-m := hypervisor.o

hypervisor-y := driver/entry.o \
                    driver/cpu_checks.o \
                driver/cpuid_available.o \

$(obj)/cpuid_available.o:
        nasm -f elf64 -o $(obj)/cpuid_available.o $(src)/cpuid_available.asm

asm 文件:


section .text
            global is_cpuid_available
            
is_cpuid_available:
    pushfq                               ;
    pushfq                               ;
    xor dword [esp],0x00200000        ;
    popfq                                ;
    pushfq                               ;
    pop rax                              ;
    xor eax,[esp]                        ;
    popfq                                ;
    and eax,0x00200000                   ;
    ret

标签: cassemblymakefilelinux-kernel

解决方案


推荐阅读