ld返回1退出状态问题

我想用.c和.s文件键入$ make来制作文件。但是创建了.c文件,但没有创建.s文件。我认为应该有一个错误。一会儿,我的终端这样说。哪一部分错了?

/tmp/ccEyd964.o: In function '_fibo': (.text+0xb5): undefined reference to 'fibo' (.text+0xc4): undefined reference to 'fibo' collect2: error: ld returned 1 exit status Makefile:13: recipe for target 'fibo_s' falied

fibo表示斐波那契。 这是C代码。

int fibo (int n)
{
if(n == 0)
    return 1;
else if (n == 1)
    return 1;
return fibo(n-1) + fibo(n -2);
}

这是我的汇编代码。

fibo:
    pushq   %rbp
    movq    %rsp, %rbp
    pushq   %rbx
    subq    $24, %rsp
    movl    %edi, -20(%rbp)
    cmpl    $0, -20(%rbp)
    jne     .L2
    movl    $1, %eax
    jmp     .L3

.L2:
    cmpl    $1, -20(%rbp)
    jne     .L4
    movl    $1, %eax
    jmp     .L3
.L4:
    movl    -20(%rbp), %eax
    subl    $1, %eax
    movl    %eax, %edi
    call    fibo
    movl    %eax, %ebx
    movl    -20(%rbp), %eax
    subl    $2, %eax
    movl    %eax, %edi
    call    fibo
    addl    %ebx, %eax
.L3:
    addq    $24, %rsp
    popq    %rbx
    popq    %rbp
    ret
评论
  • 流年换给
    流年换给 回复

    您在调用函数时是否犯了错误? 尝试这个

    return (fibo(n-1)+fibo(n-2))