前文: この質問はOracle に関するものではなく、位置独立コードの処理における gcc-4 と gcc-6 の根本的な違いを理解したいと思います。
そこで、Debian stretchで Oracle 12c のインストールを試すことにしました。
gcc-6 とのリンク段階で、次のようなエラー メッセージが発行されます。
/usr/bin/ld: /opt/oracle/product/12.2.0/lib/libpls12.a(pci.o):
relocation R_X86_64_32S against `.rodata.str1.4' can not be used when making a shared object;
recompile with -fPIC.
ただし、gcc-4.9 を使用するようにコンパイラを切り替えると、すべてのリンクが問題なく行われます。
したがって、私の2つの質問:
- gcc バージョン 4 と 6 の間で -fPIC と -fPIE のデフォルトに変更はありますか? バージョン 6 はデフォルトで 2 つのオプションを使用しているようです。
- 私にとってもっと重要なこと: gcc バージョン 6 には、位置に依存しないコードの生成にバージョン 4 の動作を使用するオプションがありますか? (または、gcc-4 が利用できなくなったため、遅かれ早かれ古いライブラリにリンクできなくなるのでしょうか?)