Assembly 程序集,ld找不到_start;
我最近一直在努力学习汇编,我有一个汇编文件,它的开头是:Assembly 程序集,ld找不到_start;,assembly,Assembly,我最近一直在努力学习汇编,我有一个汇编文件,它的开头是: global _start _start: 在尝试链接到以下对象时引发错误: ld-o assemblyCode assembly.o-g 错误是: ld:警告:找不到输入符号\u start 我还尝试在asm文件的开头附加一些其他命令,例如: section .text segment .text 所有这些都会产生相同的结果。我想知道我在这方面做错了什么,以至于链接器看不到_start:命令 这是在Ubuntu上运行的,使用nasm
global _start
_start:
在尝试链接到以下对象时引发错误:
ld-o assemblyCode assembly.o-g
错误是:
ld:警告:找不到输入符号\u start
我还尝试在asm文件的开头附加一些其他命令,例如:
section .text
segment .text
所有这些都会产生相同的结果。我想知道我在这方面做错了什么,以至于链接器看不到_start:命令
这是在Ubuntu上运行的,使用nasm来构建程序集文件。在看不到整个代码的情况下,很难说出 这是一个非常小的程序,可以用作骨架:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov edx, len ;message length
mov ecx, msg ;message to write
mov ebx, 1 ;fd to use is stdout
mov eax, 4 ;sys_write
int 0x80 ;call kernel
mov eax, 1 ;sys_exit
int 0x80 ;call kernel
section .data
msg db 'Hello, stack overflow!',0xa ; say hello to the guys
len equ $ - msg ;length of the string
要组装(到对象文件中),请使用nasm-g-f elf sample.s
要链接
ld-o sample sample.o
您是否计划将程序集文件组装到一个对象文件?我使用“nasm-f elf assembly.asm-g”将其构建到一个elf文件中,然后使用上面的ld命令链接它。nasm将创建一个.o文件,使用“ld-o assembly.o”若要链接您实际使用的是global\u start:
而不是global\u start
(如果有冒号,则需要删除它),看起来您省略了空格,并声明了一个名为global\u start
的符号。但这不是你在问题中表现出来的。始终将代码复制/粘贴到SO中,尤其是当您不明白为什么它不起作用时。由于缺乏支持而被否决。问题中的代码使用yasm-felf64-Worphan labels-gdwarf2 link.asm&&ld-o link link.o汇编+链接,对我没有任何警告(使用我通常运行的asm link
脚本)