Sous Linux, j'essaie de compiler quelque chose qui utilise l'option -fwritable-strings. Apparemment, il s'agit d'une option gcc qui ne fonctionne pas dans une version plus récente de gcc. J'ai installé gcc-3.4 sur mon système, mais je pense que la version la plus récente est toujours utilisée parce que je reçois toujours l'erreur qui indique qu'elle ne peut pas reconnaître l'option de ligne de commande -fwritable-strings. Comment puis-je obtenir make pour utiliser l'ancienne version de gcc?Comment utiliser une ancienne version de gcc sous Linux
Répondre
Si vous pouvez trouver où les chaînes inscriptibles sont réellement utilisées, une autre possibilité serait d'utiliser strdup et free sur le sous-ensemble de chaînes littérales que le code édite réellement. Cela peut être plus compliqué que la rétrogradation des versions de GCC, mais rendra le code beaucoup plus portable.
Modifier
En réponse à la question de clarification/commentaire ci-dessous, si vous avez vu quelque chose comme:
char* str = "XXX";
str[1] = 'Y';
str[2] = 'Z';
// ... use of str ...
Vous remplacerez ci-dessus avec quelque chose comme:
char* str = strdup("XXX");
str[1] = 'Y';
str[2] = 'Z';
// ... use of str ...
free(str);
Où vous aviez précédemment:
char* str = "Some string that isn't modified";
Vous remplaceraient ci-dessus avec:
const char* str = "Some string that isn't modified";
En supposant que vous avez fait ces corrections, « l'option -fwritable-chaînes » ne seraient plus nécessaires.
Peut-être que vous pourriez juste donner le chemin complet du gcc-3.4 installer lors de la compilation de votre programme: /path_to_gcc_3.4/gcc your_program
Ce n'est pas mon programme. J'utilise make. –
Essayez d'ajouter cette ligne au Makefile: CC =/path_to_gcc_3.4/gcc –
Vous ne dites rien sur le système de construction en cours d'utilisation, mais les versions habituellement vieux de gcc peut être invoquée explicitement, par quelque chose comme (ce qui est une construction basé sur les autotools):
./configure CXX=g++-3.4 CC=gcc-3.4
pour un système de construction basé maquillage, parfois cela fonctionnera:
make CXX=g++-3.4 CC=gcc-3.4
La plupart des fichiers makefiles doivent reconnaître CC
et CXX
de cette manière.
Je ne pense pas que cela fonctionnera car le fichier configure est juste quelques instructions et ne fait rien. –
Eh bien, il n'est probablement pas construit avec les autotools. Si vous nous avez donné plus de détails, nous pourrions peut-être vous aider. –
Ce type sera probablement touché à plusieurs reprises l'année prochaine car la dernière mise à niveau vers Ubuntu 11.04 et gcc-4.5.2 casse gcc. Je devais faire ceci pour obtenir la compilation de gst-ffmpeg. Je devais faire quelque chose comme. ./configure --prefix =/usr CC = gcc-4.4. Pour aider les recherches à trouver ce lien. Voici l'erreur du compilateur: –
Si l'édition de la configuration/Makefile n'est pas une option, Linux inclut un utilitaire appelé update-alternatives
pour de telles situations. Cependant, c'est une douleur à utiliser (liens vers divers tutoriels inclus ci-dessous).
Ceci est un peu plus simple - voici un script (de here) pour changer facilement votre défaut gcc
/g++
Version:
#!/bin/bash
usage() {
echo
echo Sets the default version of gcc, g++, etc
echo Usage:
echo
echo " gcc-set-default-version <VERSION>"
echo
exit
}
cd /usr/bin
if [ -z $1 ] ; then
usage;
fi
set_default() {
if [ -e "$1-$2" ] ; then
echo $1-$2 is now the default
ln -sf $1-$2 $1
else
echo $1-$2 is not installed
fi
}
for i in gcc cpp g++ gcov gccbug ; do
set_default $i $1
done
Si vous 1) le nom de ce script switch-gcc
, 2) mettre dans votre chemin et 3) le rendre exécutable (chmod +x switch-gcc
), vous pouvez passer d'une version du compilateur juste en exécutant
sudo switch-gcc 3.2
plus re ading sur update-alternatives
:
- 1. ancienne version gcc pour stimuler
- 2. Comment utiliser une ancienne version de Rails avec Aptana RadRails?
- 3. Comment forcer iPython à utiliser une ancienne version de Python?
- 4. lien avec une ancienne version de libstdC++
- 5. Ancienne version de SuperWaba
- 6. Xcode utilise une ancienne version de modèles?
- 7. Exiger une ancienne version de Silverlight
- 8. Comment construire le GCC d'Apple sous Linux/Windows?
- 9. Comment installer une ancienne version de Django sur virtualenv?
- 10. Comment puis-je télécharger une ancienne version de l'iPhone SDK?
- 11. Comment installer une ancienne version de Flash Player?
- 12. Comment tester mon application sur une ancienne version d'IE?
- 13. pour chacun dans GCC et GCC version
- 14. Comment compiler pour Windows sous Linux avec gcc/g ++?
- 15. Puis-je modifier la sortie d'impression de GCC sous Linux?
- 16. FoundationKit sur gcc/Linux
- 17. Installation de gcc sous linux sans compilateur c
- 18. Tomcat sous Linux (centos). Version java incorrecte
- 19. Comment déboguer avec une ancienne version d'Internet Explorer?
- 20. TextTransform.exe semble accepter uniquement une ancienne version de C#
- 21. pthreads: incohérence entre gcc et icc sous Linux
- 22. Caches WSS ancienne version de workflow
- 23. Est-il possible de télécharger une ancienne version de XCode?
- 24. Comment changer la version de GCC Xcode?
- 25. Erreur de syntaxe avec une version différente de gcc?
- 26. NHibernate 2.1.1 fait référence à une ancienne version de Spring
- 27. Comment forcer une version 32 bits de Boost avec GCC?
- 28. Comment configurer gcc pour utiliser une autre glibc?
- 29. gcc version 4.1.2 dans mac os x
- 30. Comment configurer/créer/installer par rapport à une ancienne version d'une bibliothèque?
Comment ça marche? Pouvez-vous donner un exemple? –