2016-02-21 3 views
1

Я учусь, как пройти через сборку, и я столкнулся с какой-то странной проблемой. Я получаю сообщение о том,Ошибка сбоя кода

collect2: ошибка: л.д. возвращается 1 выход статус

и прежде чем я получаю это сообщение, хотя я получаю строку ошибок, как это.

_start': Name.asm:(.text+0x0): multiple definition of _start» /USR/бен/л.д.: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): перемещение 0 имеет недопустимый индекс символа 11

/USR/бен/LD: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): перемещение 1 имеет недействительный индекс символа 12

/USR/бен/Л.Д. : /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/бен/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/бен/LD: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): перемещение 8 имеет недействительный индекс символа 12

/USR/бен/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/бен/LD: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): перемещение 12 имеет недействительный индекс символа 13

/USR/бен/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): relocation 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/Библиотека/x86_64-Linux-ГНУ/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/бен/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-гну/4,8 /../../../ x86_64-Linux-гну/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: error: 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 
+0

Вы понимаете, что есть другие элементы, кроме x86, верно? Кроме того, Ubuntu не имеет к этому никакого отношения. Пожалуйста, отметьте свой вопрос соответствующим образом. –

+3

Вы забыли показать, как вы собираете и связываете. Во всяком случае, проблема в том, что вы связываетесь с libc и пытаетесь создать 64-битную программу из 32-битного объекта. Используйте 'ld -melf_i386' или' gcc -m32 -nostdlib'. – Jester

ответ

0

Я не на Linux на данный момент, но не может собрать ФАЙЛА проблемы с NASM

NASM -felf32 hello.asm -ohello.obj

Try: НКУ -m32 hello.obj

+0

Мне удалось заставить его работать сейчас, оказывается, я набрал несколько 4 вместо 3. Однако я, похоже, столкнулся с новой проблемой. Я не могу заставить код работать из-за странного сообщения. Я использую код, gcc -g -Wall -fno-stack-protector -z execstack Shellcode.c Shellcode, тогда меня приветствует сообщение о том, что он не может сделать код i_386 и что-то о выходе 1. Теперь я был сказал, что это потому, что мне нужно быть более пространственным, но я не знаю, как быть более пространственным. –

Смежные вопросы