尝试链接nasm对象文件时链接失败[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我有这个简单的程序来计算浮点数的平方根

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
gcc x86 nasm x86-64 ld
1个回答
0
投票

正如Michael Petch在上述评论中所述,

我希望用-static建设可能会奏效

我有同样的问题,这解决了它。

© www.soinside.com 2019 - 2024. All rights reserved.