用GCC编译C文件会产生错误吗?

时间:2017-02-21 16:37:54

标签: c linux gcc

我正在尝试在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

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢所有的建议!

因此,事实证明这是Kali基于的gcc的Debian版本中的错误(或更改)。解决方案是使用-no-pie进行编译。