首页 > 解决方案 > GNU 汇编中的“_main”和“main”有什么区别?

问题描述

我刚刚开始自己​​学习汇编我的
第一步是编写一个返回'10'的汇编代码并检查它$echo $?

.global _main

_main:
        pushq %rbp
        movq %rsp, %rbp
        movl $10, %eax
        leave
        ret

这是我的第一个名为“ass.s”的代码版本,
不知何故,当我用它编译时,gcc ass.s
它不断返回错误,然后是
/usr/lib/gcc/x86_64-linux-gnu/5/../../../ x86_64-linux-gnu/crt1.o:在函数_start': (.text+0x20): undefined reference to main'

当我将代码固定为

.global main

main:
        pushq %rbp
        movq %rsp, %rbp
        movl $10, %eax
        leave
        ret

它运作良好。

这两个代码之间的唯一区别是_mainmain
谁能解释为什么_main会发生错误?

标签: assemblygccx86-64gnu

解决方案


推荐阅读