所有
我目前正在更改我们用作MingGw的编译器。此时我有MinGw编译所有文件但我无法将其链接到我拥有的汇编文件中。我检查过,汇编文件已编译成目标文件。我还检查了“-verbose”选项,这些目标文件包含在链接过程中。但是我得到的只是一遍又一遍的关于“未定义引用....”的错误消息。
我不确定我缺少什么才能使汇编文件正确链接。任何帮助将不胜感激!
答案 0 :(得分:1)
asm文件中的符号名称是否以_(下划线)开头?例如,下面使用MinGW-W64的gcc 4.9.2编译的示例在32位XP上按预期工作:
-----文件asmtest.c -----
#include <stdio.h>
extern int add(int x, int y);
int main(int argc, char *argv[])
{
printf("The result is: %d\n", add(3, 5));
return 0;
}
-----档案asmadd.S -----
.section .text
.global _add
_add:
movl 4(%esp), %eax
movl 8(%esp), %ebx
addl %ebx, %eax
ret
-----编译命令-----
gcc -Wall -o asmtest asmtest.c asmadd.S