我正在尝试在Kali Linux上编译C可执行文件:https://www.exploit-db.com/exploits/17787/
# 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
谢谢!
答案 0 :(得分:0)
感谢所有的建议!
因此,事实证明这是Kali基于的gcc的Debian版本中的错误(或更改)。解决方案是使用-no-pie进行编译。