J'ai installé GCC 3.4 dans /opt/gcc-3.4, et je l'utilise pour compiler du code hérité qui est incompatible avec GCC 4. signifie également les anciennes versions des bibliothèques standard C (++), binutils et des bibliothèques utilitaires.Comment lier à une version spécifique de la bibliothèque standard (avec gcc)
Cela fonctionne correctement pour certaines bibliothèques, mais échoue lors de la compilation de libtiff, car il récupère les bibliothèques système dans/usr/lib (voir la sortie ci-dessous). Cela peut être un problème d'autotools/configure, mais je ne suis pas sûr. Je ne trouve pas de commutateur de configuration ou de variable d'environnement, et je préfère ne pas modifier mon système /usr/lib/libc.so. Comment s'assure-t-on que le lien vers la bibliothèque standard est dans /opt/gcc-3.4.4/lib, et ignore complètement/lib et/usr/lib?
sortie de make (extrait):
libtool: link: g ++ -shared -nostdlib /usr/lib/crti.o /opt/gcc-3.4.3/lib/gcc/i686-pc -linux-gnu/3.4.3/crtbeginS.o .libs/tif_stream.o -Wl, - archive complète ../port/.libs/libport.a -Wl, - no-whole-archive -Wl, -rpath -Wl,/home/jason/d0src34/prereq/tiff-3.9.4/libtiff/.libs -Wl, -rpath -Wl,/opt/gcc-3.4.3/lib -Wl, -rpath -Wl,/home/jason/d0src34/prereq/usr/lib -Wl, -rpath -Wl,/opt/gcc-3.4.3/lib ../libtiff/.libs/libtiff.so -L/usr/lib/usr/lib/libjpeg.so -lz -L/opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3 -L/opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3 /../../ .. /opt/gcc-3.4.3/lib/libstdc++.so -L/home/jason/Téléchargements/gcc- 3.4.3/build/i686-pc-linux-gnu/libstdC++ - v3/src -L/home/jason/Téléchargements/gcc-3.4.3/build/i686-pc-linux-gnu/libstdC++ - v3/src/.libs -L/home/jason/Téléchargements/gcc-3.4.3/build/gcc -lm -lc -lgcc_s /opt/gcc-3.4.3/lib/gcc/i686-pc-linux-gnu/3.4.3 /crtendS.o /usr/lib/crtn.o -Wl, -soname -Wl, libtiffxx.so.3 -o .libs/libtiffxx.so.3.9.4
/home/jason/d0src34/prereq/usr/bin/ld: /usr/lib/libc.so: format de fichier non reconnu; traiter comme script éditeur de liens
/home/jason/d0src34/prereq/usr/bin/ld:/usr/lib/libc.so:5: parse error
La page de manuel ld indique: L'éditeur de liens utilise les chemins de recherche suivants pour localiser les bibliothèques partagées requises. (... divers éléments configurables ...) 7. Les répertoires par défaut, normalement/lib et/usr/lib. Donc, peut-être la question est, comment changer les "répertoires par défaut"? Je n'ai trouvé aucune option lors de la configuration de binutils (où réside ld) ... – jdm