Préambule: cette question est pas sur Oracle, au lieu que je voudrais comprendre la différence fondamentale entre gcc-4 et gcc-6 le traitement du code indépendant de la position. J'ai donc décidé d'essayer une installation Oracle 12c sur une extension Debian .gcc -fPIC -fPIE: différence betweenn gcc-4 et gcc-6
Au cours de l'étape de liaison avec gcc-6, les messages d'erreur comme les éléments suivants sont émis:
/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.
Cependant, si je passe le compilateur d'utiliser gcc-4.9, tout l'enchaînement se fait sans aucun problème.
Ainsi mes 2 questions:
- Y at-il un changement dans les valeurs par défaut pour -fPIC et -fPIE entre gcc version 4 et 6? Très probablement oui, la version 6 semble utiliser les 2 options par défaut.
- Plus important pour moi: est-ce que gcc, version 6 a une option pour utiliser le comportement de la version 4 pour la génération de code indépendant de la position? (Ou vais-je tôt ou tard, ne sera plus en mesure de lier contre vieux bibliothèques parce que gcc-4 est plus disponible?)