Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 程序集,ld找不到_start;_Assembly - Fatal编程技术网

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
脚本)