【发布时间】:2017-04-10 18:55:59
【问题描述】:
我在这方面绝对是绿色的,但是在课堂上,老师给了我们他写的文件,他只是为了让我们运行它,然后它工作得很好,但是当我尝试在家里做它时(我在 VirtualBox 上使用 Linux)并使用:
nasm -f elf64 hello.asm -o hello.o
gcc hello.o -o hello
我收到错误“在制作共享对象时无法使用针对 `.bss' 的重定位 R_X86_64_32S;使用 -fPIC 重新编译”。有人可以解释一下如何使其工作吗?
global main
extern printf
section .data
napis: db ' Hello world! - po raz %ld',10,0
liczba_iteracji: equ 5
section .bss
licznik: resb 1
section .text
main:
push rbp
mov rbp,rsp
mov byte [licznik],0
petla: ;naiwna!
inc byte [licznik]
mov rdi, qword napis
mov rsi, qword [licznik]
mov rax, 0
call printf
cmp byte [licznik],liczba_iteracji
jnz petla
mov rsp,rbp
pop rbp
mov rax,1 ;SYS_EXIT
mov rbx,0
int 80h
【问题讨论】:
-
关于使用 gcc -shared -fPIC foo.c -o libfoo.so 的答案并没有解决我的问题
标签: linux assembly x86-64 nasm linker-errors