序言:這個問題是不是約甲骨文,而不是我想了解GCC-4和gcc-6之間的根本區別位置獨立代碼的處理。的gcc -fPIC -fPIE:差異betweenn 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沒有更多可用?)