这是我第一次在这里发布信息,因为我通常可以通过其他问题找到答案,但是像我的问题一样,其他所有解决方案都无效。
我在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
这是简单的组装。这些功能没有
_
前缀。我现在正在拔头发,请寻求帮助。谢谢。
最佳答案
这可能是因为您没有通过在编译命令中不包括汇编代码的目标文件/源文件来正确地编译它们。
假设您在main.c
中具有C源代码,在logicshift.S
中具有汇编源代码,那么您可以对其进行编译以生成一个名为main
的可执行文件,如下所示:
gcc main.c logicshift.S -o main