未定义对 "function" 汇编函数的引用

Undefined reference to "function" assembly function

这是我第一次在这里发帖,因为我通常可以通过其他问题找到我的答案,但是像我这样的问题的其他解决方案都没有用。

我在 Eclipse Mars 中使用 MinGW GCC

C代码

#include <stdio.h>
#include <stdlib.h>


extern int logicShift(int);
void program1();

int main(void)
{
    program1();

    return 0;
}

void program1()
{
    int num = 0;
    int disp;
    while (num >= 0)
    {
        num += 2;
        disp = logicShift(num); // this is the error right here
        printf ("%d", disp);
    }
}

错误:undefined reference to logic shift

assembly.s 文件:

.global logicShift

logicShift:
    push    %ebp
    movl    %esp, %ebp

    movl 8(%ebp), %edx
    shll , %edx

    movl    %edx, %eax
    pop     %ebp
    ret

组装简单。这些函数没有 _ 前缀。在这一点上我正在拔头发,我需要帮助。 谢谢。

这可能是因为您没有在编译命令中包含汇编代码的对象 file/source 文件而没有正确编译它们。

假设您在 main.c 中有 C 源代码,在 logicshift.S 中有汇编源代码,那么您可以编译它们以生成名为 main 的可执行文件:

gcc main.c logicshift.S -o main