使用Mingw链接汇编文件

时间:2014-11-17 00:28:00

标签: assembly mingw

所有

我目前正在更改我们用作MingGw的编译器。此时我有MinGw编译所有文件但我无法将其链接到我拥有的汇编文件中。我检查过,汇编文件已编译成目标文件。我还检查了“-verbose”选项,这些目标文件包含在链接过程中。但是我得到的只是一遍又一遍的关于“未定义引用....”的错误消息。

我不确定我缺少什么才能使汇编文件正确链接。任何帮助将不胜感激!

1 个答案:

答案 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