这是我第一次在这里发帖,因为我通常能够通过其他问题找到我的答案,但是像我这样的问题的所有其他解决方案都没有用。
我在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
这是简单的装配。函数没有_
前缀。我此时拔毛,我需要帮助。
谢谢。
答案 0 :(得分:0)
这可能是因为你没有在编译命令中不包含汇编代码的目标文件/源文件而正确编译它们。
假设您拥有main.c
中的C源代码和logicshift.S
中的汇编源代码,那么您可以编译它们以生成名为main
的可执行文件:
gcc main.c logicshift.S -o main