未明确引用"功能"装配功能

时间:2015-12-03 22:36:12

标签: c assembly reference undefined

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

我在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 $1, %edx

    movl    %edx, %eax
    pop     %ebp
    ret

这是简单的装配。函数没有_前缀。我此时拔毛,我需要帮助。 谢谢。

1 个答案:

答案 0 :(得分:0)

这可能是因为你没有在编译命令中不包含汇编代码的目标文件/源文件而正确编译它们。

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

gcc main.c logicshift.S -o main