Я скопировал пример программы на ассемблере и скомпилировал ее, используя g cc, но получил следующий вывод:
g cc hello.s -o hello1
/ usr / bin / ld: /tmp/ccPs5dcq.o: перемещение R_X86_64_32 против `.data 'нельзя использовать при создании объекта P IE; перекомпиляция с -fP IE
/ usr / bin / ld: ошибка окончательного соединения: непредставительный раздел на выходе
collect2: error: ld вернул 1 статус выхода
Код:
.data
hello_str:
.string "Hello, world!\n"
.set hello_str_length, . - hello_str - 1
.text
.globl main
.type main, @function
main:
movl $4, %eax
movl $1, %ebx
movl $hello_str, %ecx
movl $hello_str_length, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
.size main, . - main
Что я делаю не так?
PS Я абсолютно новичок в ассемблере, просто пытаюсь разобрать пример