【问题标题】:Linking in assembly files with Mingw使用 Mingw 链接程序集文件
【发布时间】:2014-11-17 00:28:00
【问题描述】:

全部,

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

我不确定我缺少什么才能让程序集文件正确链接。任何帮助将不胜感激!

【问题讨论】:

    标签: assembly mingw


    【解决方案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
    

    【讨论】:

    • 非常感谢!我不确定它在文档中的什么地方谈到了这个要求,但这确实起到了作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2021-08-29
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2012-02-13
    • 2019-10-17
    相关资源
    最近更新 更多