创建共享对象时 .data 重定位的链接器错误

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

我不明白为什么我有这个错误:

ls: filename: relocation R_X86_64_32 against '.data' can not be used when making a shared object; recompile with -fPIC
.

我试图理解这个问题,我在互联网上阅读了一些博客,但我没有找到任何解决方案。

我尝试在我的

-no-pie
命令上添加
ld
选项,我尝试在我的 asm 代码中添加
rel
default rel
但链接器失败并出现相同的错误代码。

我认为问题是当我将一个寄存器值添加到一个.data地址时,这段代码无法链接:

global function
default rel
section .text
    function:
        mov al, byte [key + eax]
section .data
    key db 0

我尝试链接此代码时没有任何错误:

global function
default rel
section .text
    function:
        mov al, byte [key]
section .data
    key db 0

我的完整代码在这里:my github.

您对此错误有任何解决方案和解释吗?

assembly linker nasm ld relocation
© www.soinside.com 2019 - 2024. All rights reserved.