这个问题在这里已有答案:
我有这个简单的程序来计算浮点数的平方根
global main
extern printf
section .data
float_t db '%f',0x0
val dq 123.45
res dq 0x0
section .text
main:
fld qword[val]
fsqrt
fst qword[res]
xor rax,rax
mov rdi, float_t
mov rsi, [res]
call printf
mov rax,60
mov rdi,0
syscall
我把它组装起来了
$ nasm -f elf64 fpu.asm -o fpu.o
然后尝试用gcc链接到glibc
$ gcc fpu.o -o fpu
海湾合作委员会抱怨:
/usr/bin/ld: fpu.o: relocation R_X86_64_32S against `.data' can not be used
when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
正如Michael Petch在上述评论中所述,
我希望用
-static
建设可能会奏效
我有同样的问题,这解决了它。