2
:これが起こって、または、なぜそれは私が共有オブジェクトをコンパイルしようとしていると考えている理由https://www.exploit-db.com/exploits/17787/GCCでCファイルをコンパイルするとエラーが発生しますか?私はカーリーLinux上で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共有ライブラリとあまり変わりません。エラーは基本的には有効ですが、紛らわしいメッセージが表示されることがあります。 –