我不明白为什么我有这个错误:
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.
您对此错误有任何解决方案和解释吗?