Я пытался скомпилировать код ржавчины, но ржавчина c распечатать эту ошибку:
relocation R_X86_64_32S cannot be used against local symbol; recompile with -fPIC
Но ржавчина c не имеет флага '-fPI C', так как я могу скомпилировать бинарный файл PI C с ржавчиной c?
Я пытался '- C relocation-model = pi c - C code-model = large', но все равно получаю эту ошибку.
РЕДАКТИРОВАТЬ:
Я понял ошибку! Я использую ассемблерный код в asm! макрос, и он использует какой-то адрес внешнего символа, поэтому ржавчина пытается использовать 'R_X86_64_32S', и поскольку двоичный файл связан с 0xffff800000000000, он вызывает ошибку.
EDIT2:
Этот код вызывает похожую ошибку:
#![feature(asm)]
fn main ()
{
unsafe
{
asm! ("lea rax, [label]
label:"
:
:
:
: "intel");
}
}
Ошибка:
= note: /usr/bin/ld: main.main.7rcbfp3g-cgu.0.rcgu.o: relocation R_X86_64_32S against `.text._ZN4main4main17h9e0ea2b04575dfdbE' can not be used when making a PIE object; recompile with -fPIE