En Linux estoy intentando compilar algo que usa la opción -fwritable-strings. Aparentemente esta es una opción de gcc que no funciona en la versión más nueva de gcc. Instalé gcc-3.4 en mi sistema, pero creo que la versión más reciente todavía se está utilizando porque aún recibo el error que dice que no puede reconocer la opción de línea de comando -fwritable-strings. ¿Cómo puedo hacer que use la versión anterior de gcc?Cómo usar una versión anterior de gcc en Linux
Respuesta
Si puede encontrar dónde se están utilizando las cadenas de escritura, otra posibilidad sería usar strdup y free en el subconjunto de cadenas de caracteres literales que el código está editando realmente. Esto podría ser más complicado que degradar versiones de GCC, pero hará que el código sea mucho más portátil.
Editar
En respuesta a la pregunta de clarificación/comentario a continuación, si usted vio algo como:
char* str = "XXX";
str[1] = 'Y';
str[2] = 'Z';
// ... use of str ...
Se podría sustituir a la anterior con algo como:
char* str = strdup("XXX");
str[1] = 'Y';
str[2] = 'Z';
// ... use of str ...
free(str);
Y dónde usted tuvo previamente:
char* str = "Some string that isn't modified";
debería reemplazar lo anterior con:
const char* str = "Some string that isn't modified";
Suponiendo que usted hizo estas soluciones, ya no sería necesario "-fwritable-strings".
Tal vez usted podría dar toda la trayectoria de la gcc-3.4 instalar durante la compilación de su programa: /path_to_gcc_3.4/gcc your_program
No es mi programa. Estoy usando make. –
Trate de añadir esta línea al Makefile: CC =/path_to_gcc_3.4/gcc –
Usted dice nada sobre el sistema de construcción en uso, pero por lo general las versiones antiguas de gcc se puede invocar de forma explícita, por algo así como (esto es para una construcción basada en autotools):
./configure CXX=g++-3.4 CC=gcc-3.4
para un sistema de construcción a base de maquillaje, a veces esto funcionará:
make CXX=g++-3.4 CC=gcc-3.4
La mayoría de los archivos MAKE deben reconocer la anulación de CC
y CXX
de esta manera.
no creo que va a funcionar porque el archivo de configuración se encuentra a sólo unas pocas declaraciones y no hace nada. –
Bueno, entonces probablemente no esté construido con autotools. Si nos dio más detalles, podríamos ayudarlo. –
Este chico probablemente sea golpeado varias veces el próximo año, ya que la última actualización a Ubuntu 11.04 y gcc-4.5.2 rompe gcc. Tuve que hacer esto para obtener gst-ffmpeg para compilar. Tenía que hacer algo como. ./configure --prefix =/usr CC = gcc-4.4. Para ayudar a las búsquedas, encuentre este enlace. aquí está el error del compilador: –
Si editar la configuración/Makefile no es una opción, Linux incluye una utilidad llamada update-alternatives
para tales situaciones. Sin embargo, es un dolor de usar (enlaces a varios tutoriales incluidos a continuación).
Esto es un poco más simple - aquí está un script (de here) para cambiar fácilmente su defecto gcc
/g++
versión:
#!/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 1) nombre de este script switch-gcc
, 2) se pone en su camino y 3) que sea ejecutable (chmod +x switch-gcc
), a continuación, puede cambiar las versiones del compilador sólo con la ejecución
sudo switch-gcc 3.2
nuevamente además ading en update-alternatives
:
- 1. Instalación de la versión anterior de gcc
- 2. Cómo usar 2 versiones diferentes de GCC en Linux Ubuntu y forzar MAKE para usar una de ellas
- 3. Usar la versión anterior de Rake
- 4. cómo desinstalar una versión anterior de xcode
- 5. Enlace con una versión anterior de libstdC++
- 6. ¿Cómo probar mi aplicación en una versión anterior de IE?
- 7. ¿Cómo instalo una versión anterior de Django en virtualenv?
- 8. ¿Cómo usar el gcc instalado en macports?
- 9. cómo instalar la versión anterior en TestFlight
- 10. ¿Cómo puedo instalar una nueva versión de gcc en ubuntu
- 11. capistrano rollback a una versión anterior?
- 12. ¿Cómo proporcionar a Matlab la versión anterior de gcc que desea?
- 13. ¿Cómo veo una versión anterior de un archivo SVN?
- 14. XCode/Simulator: ¿Cómo ejecutar una versión anterior de iOS?
- 15. ¿Qué versión 4.x de gcc debería uno usar?
- 16. ¿Cómo instalo una versión anterior de Flash Player?
- 17. Clonación de una versión anterior de github repo
- 18. distutils Python no usar la versión correcta de gcc
- 19. ¿Cómo forzar a iPython a usar una versión anterior de Python?
- 20. Cómo enlazar a una versión específica de una biblioteca compartida en GCC
- 21. Pip la instalación en una versión anterior de Python
- 22. La última versión de gcc para usar libstdC++. So.5
- 23. Equivalente de InterlockedIncrement en Linux/gcc
- 24. ¿Cómo usar OpenSSL en GCC?
- 25. Incluye con el Enlazador GCC de Linux
- 26. arm-linux-gcc vs arm-elf-gcc
- 27. degradación a una versión anterior de una aplicación para iphone
- 28. Linux, GNU GCC, ld, scripts de versión y el formato binario ELF - ¿Cómo funciona?
- 29. Android: tema Holo versión anterior
- 30. compilando kernel de Linux con no-gcc
¿Cómo funciona eso? ¿Puede dar un ejemplo? –