未定义对 "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
这是我第一次在这里发帖,因为我通常可以通过其他问题找到我的答案,但是像我这样的问题的其他解决方案都没有用。
我在 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