Now, I have an object file – a black box to decryption RSA ciphertexts which is compiled with g++. when I try to link with rustc, I got the error messages:
= note: /usr/bin/ld: /home/osmanthus/Projects/experiment/target/debug/build/experiment-4970444be695a1e7/out/libwrapper.a(dec.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output
collect2: error: ld returned 1 exit status
With g++
, I can fix it with linking options -no-pie
, so I try to pass -no-pie
to cc::Build:
extern crate cc;
fn main() {
cc::Build::new()
.file("src/wrapper.cpp")
.cpp(true)
.flag("-no-pie")
.flag("-lgmp")
.object("src/dec.o")
.compile("libwrapper.a");
}
But I fail… How can I fix it within build.rs