汇编代码故障

时间:2016-02-21 23:07:27

标签: ubuntu assembly

我正在学习如何进行装配,我遇到了一个奇怪的问题。我收到一条消息说明,

collect2:错误:ld返回1退出状态

在我收到此消息之前,虽然我收到了一串这样的错误。

_start': Name.asm:(.text+0x0): multiple definition of _开始' / usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位0具有无效的符号索引11

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位1具有无效符号索引12

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位2具有无效符号索引2

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位3具有无效的符号索引2

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位4具有无效的符号索引11

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位5具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位6具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位7具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位8具有无效的符号索引12

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位9具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位10具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位11具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位12具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位13具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位14具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位15具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位16具有无效符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位17具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位18具有无效的符号索引13

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info):重定位19具有无效符号索引21

/ usr / bin / ld:/usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line):重定位0具有无效符号索引2

/usr/lib/gcc/x86_64-linux-gnu/4.8 /../../../ x86_64的-Linux的GNU / crt1.o:/build/buildd/eglibc-2.19/csu/ .. /sysdeps/x86_64/start.S:118:首先在这里定义 / usr / bin / ld:i386输入文件架构Name.o' is incompatible with i386:x86-64 output /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function _ start': (.text + 0x20):未定义对`main'的引用 collect2:错误:ld返回1退出状态

`_start'

的多重定义

我完全失败了。我将在下面发布我的代码,我希望这只是一个小错误。

section .data                           ;Data segment
    userMsg db 'Please enter your name : ' ;Ask the user to enter a number
    lenUserMsg equ $-userMsg             ;The length of the message
    dispMsg db 'Hi my name is'
    lenDispMsg equ $-dispMsg            

 section .bss           ;Uninitialized data
    num resb 5

section .text          ;Code Segment
global _start

_start:                ;User prompt
    mov eax, 4
    mov ebx, 1
    mov ecx, userMsg
    mov edx, lenUserMsg
    int 80h


    ;Output the message 'Your name is '
    mov eax, 4
    mov ebx, 1
    mov ecx, dispMsg
    mov edx, lenDispMsg
    int 80h  

    ;Output the name entered
    mov eax, 4
    mov ebx, 1
    mov ecx, num
    mov edx, 5
    int 80h  

    ; Exit code
    mov eax, 1
    mov ebx, 0
    int 80h

1 个答案:

答案 0 :(得分:0)

我目前不在linux上但是可以用nasm汇编文件没问题

nasm -felf32 hello.asm -ohello.obj

尝试:gcc -m32 hello.obj