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共享庫沒有多大區別;這可能是錯誤基本上是有效的,但帶有令人困惑的信息。 –