2
我想在编译的Linux卡利一个C可执行文件:https://www.exploit-db.com/exploits/17787/使用GCC编译C文件会产生错误?
# gcc -o out 17787.c -lrt
/usr/bin/ld: /tmp/ccv59WCS.o: relocation R_X86_64_32S against symbol `kernel_code' 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
有谁知道为什么会这样,为什么它认为我尝试编译共享对象?据我所知这应该只是生成一个ELF可执行文件...
# gcc --version
gcc (Debian 6.3.0-6) 6.3.0 20170205
# uname -a
Linux kali 4.9.0-kali2-amd64 #1 SMP Debian 4.9.10-1kali1 (2017-02-20) x86_64 GNU/Linux
谢谢!
注意这不是编译错误,而是链接错误。也许你的'gcc'被配置为默认创建共享对象,所以你需要明确地告诉它你希望它是静态的。 – Hurkyl
谢谢..你知道这是配置吗? – James
你有没有考虑尝试在错误信息中给出的建议? ELF可执行文件与ELF共享库没有多大区别;这可能是错误基本上是有效的,但带有令人困惑的信息。 –