ld 没有 link as 生成的目标文件
ld does not link object file generated by as
我用C写了一个Hello World程序,我用命令gcc -S -o hello.s hello.c
(代码在hello.c)生成汇编,然后用as
到assemble 它。最后我使用 ld
链接了目标代码,但它给了我以下错误:
ld: a.out:hello.c:(.text+0xa): undefined reference to `__main'
ld: a.out:hello.c:(.text+0x16): undefined reference to `puts'
C代码如下:
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
}
我用的是Intel Core i3处理器,用MinGW编译。我的操作系统是 Windows 7.
这是生成的程序集:
.file "hello.c"
.text
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC0:
.ascii "Hello world![=13=]"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
LFB13:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
andl $-16, %esp
subl , %esp
call ___main
movl $LC0, (%esp)
call _puts
movl [=13=], %eax
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
LFE13:
.ident "GCC: (MinGW.org GCC Build-2) 9.2.0"
.def _puts; .scl 2; .type 32; .endef
感谢 Nate Eldredge 帮我找到答案。
到link由as
生成的文件,使用gcc -v (file)
。
我用C写了一个Hello World程序,我用命令gcc -S -o hello.s hello.c
(代码在hello.c)生成汇编,然后用as
到assemble 它。最后我使用 ld
链接了目标代码,但它给了我以下错误:
ld: a.out:hello.c:(.text+0xa): undefined reference to `__main'
ld: a.out:hello.c:(.text+0x16): undefined reference to `puts'
C代码如下:
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
}
我用的是Intel Core i3处理器,用MinGW编译。我的操作系统是 Windows 7.
这是生成的程序集:
.file "hello.c"
.text
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC0:
.ascii "Hello world![=13=]"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
LFB13:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
andl $-16, %esp
subl , %esp
call ___main
movl $LC0, (%esp)
call _puts
movl [=13=], %eax
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
LFE13:
.ident "GCC: (MinGW.org GCC Build-2) 9.2.0"
.def _puts; .scl 2; .type 32; .endef
感谢 Nate Eldredge 帮我找到答案。
到link由as
生成的文件,使用gcc -v (file)
。