# Duda con GCC

## Latinvs

Tengo instalada la versión 4.6.2 de GCC. En uno de esos experimentos tontos por ver si una versión más reciente sería algo más rápida compilando (por cierto, se vovió a saber algo de EKOpath?) me dio por instalar hace cosa de un par de meses esta versión. No tengo queja, llevo todo este tiempo sin ningún problema, aunque no he notado mayor rapidez; el caso es que cada vez que actualizo el sistema, emerge se empeña en instalarme la versión 4.5.3 en un "slot" nuevo. ¿Es normal? y si lo es ¿por qué, qué necesidad hay de tener varias versiones?

Gracias y saludos.

----------

## gringo

 *Quote:*   

> emerge se empeña en instalarme la versión 4.5.3 en un "slot" nuevo. ¿Es normal? 

 

depende, si tienes un gcc 4.5.x instalado y sale una actualización para esa rama es normal que te informe de la actualización.

 *Quote:*   

> ¿por qué, qué necesidad hay de tener varias versiones? 

 

igual hay software que no se compila con nuevas versiones del compilador o si usas un compilador experimental nunca está de mas tener otro estable por si el compilador experimental empieza a romper software, etc.

Tu mismo, ya sabes, tu te lo guisas y tu te lo comes  :Wink: 

saluetes

----------

## lexming

Una vez actualizado gcc debes comprobar que versión está definida como activa

```
# gcc-config -l

[1] x86_64-pc-linux-gnu-4.5.3 *
```

Este es mi caso, en tu caso puede que salgan 2 lineas una para 4.5.3 y otra para 4.6.2. Si así es define la nueva versión como activa con gcc-config X (donde X debe ser el numero de la lista anterior asociado a la versión 4.6.2, supongo que será la 2  :Very Happy: )

Si aun así sigues teniendo problemas puedes mirar las dependencias sobre gcc de tus paquetes ya instalados con 

```
# equery depends gcc
```

 equery viene en el paquete app-portage/gentoolkit.

En la lista resultante verás los paquetes que dependen de gcc y sus requerimientos de versión.

Saludos

----------

## Latinvs

 *gringo wrote:*   

>  *Quote:*   emerge se empeña en instalarme la versión 4.5.3 en un "slot" nuevo. ¿Es normal?  
> 
> depende, si tienes un gcc 4.5.x instalado y sale una actualización para esa rama es normal que te informe de la actualización.

 

Sí, eso es lógico, pero no es el caso sólo tengo la 4.6

 *gringo wrote:*   

>  *Quote:*   ¿por qué, qué necesidad hay de tener varias versiones?  
> 
> igual hay software que no se compila con nuevas versiones del compilador o si usas un compilador experimental nunca está de mas tener otro estable por si el compilador experimental empieza a romper software, etc.

 

Ahm, entiendo. No sabía que versiones superiores del compilador podían no ser retrocompatibles, o como se diga, al menos no pensaba que de una 4.6 a una 4.5 pudiera haber tanta diferencia.

De momento no he tenido problemas, pero si algún paquete me peta durante la compilación supongo que ya sé que es lo primero que tengo que hacer.

Agradesío.

 *lexming wrote:*   

> Una vez actualizado gcc debes comprobar que versión está definida como activa
> 
> [code]# gcc-config -l
> 
> 

 

Sí, eso lo tengo en orden, la única versión instalada y activa es la 4.6.2.

 *lexming wrote:*   

> Si aun así sigues teniendo problemas puedes mirar las dependencias sobre gcc de tus paquetes ya instalados con [code]# equery depends gcc[/code] equery viene en el paquete app-portage/gentoolkit.
> 
> En la lista resultante verás los paquetes que dependen de gcc y sus requerimientos de versión.
> 
> 

 

Eso no lo sabía (un día de estos va a ser hora de estudiarse el Gentoolkit más en serio, jeje), y el resultado me ha dejado un poco liado, xD:

[code]

equery depends gcc

 * These packages depend on gcc:

app-admin/eselect-python-20100321 (>=sys-devel/gcc-3.4)

dev-db/mysql-5.1.61 (>=sys-devel/gcc-3.4.6)

sys-devel/llvm-2.9-r2 (>=sys-devel/gcc-3.0)

sys-libs/glibc-2.13-r4 (>=sys-devel/gcc-3.4.4)

                       (arm ? >=sys-devel/gcc-4.1.0)

                       (x86 ? >=sys-devel/gcc-4.3)

                       (amd64 ? >=sys-devel/gcc-4.3)

                       (ppc ? >=sys-devel/gcc-4.1.0)

                       (ppc64 ? >=sys-devel/gcc-4.1.0)

virtual/fortran-0 (sys-devel/gcc[fortran])

                  (openmp ? sys-devel/gcc[fortran,openmp?])

[/code]

¿Esos "mayor o igual a" no deberían darse por satisfechos con mi versión o quizá ese "mayor que" está limitado hasta la versión mayor marcada en portage como estable?

P.D: No sé por qué la etiqueta "Code" del foro no funciona, disculpad el batiburrillo visual último.

----------

## gringo

 *Quote:*   

> pero no es el caso sólo tengo la 4.6 

 

entonces debe de haber algún paquete que dependa de esta versión de gcc.

Por si sirve de algo, yo tb. tengo la 4.6.2 siendo la única en mi sistema, y hasta ahora nunca me ha pedido que instalara otra versión.

Que pasa si añades <sys-devel/gcc-4.6.2 en el package.mask ? te sigue saliendo la dependencia de otra versión del gcc ? 

saluetes

----------

## Latinvs

 *gringo wrote:*   

> 
> 
> Que pasa si añades <sys-devel/gcc-4.6.2 en el package.mask ? te sigue saliendo la dependencia de otra versión del gcc ? 
> 
> 

 

Alucinante! Sí, pero además no sólo al actualizar el "world" sino simplemente el propio GCC:

```

emerge -upv gcc

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild  NS   #] sys-devel/gcc-4.5.3-r1 [4.6.2] USE="cxx fortran nls nptl (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -graphite -gtk (-hardened) (-libffi) (-libssp) -lto -mudflap (-multilib) -multislot -nocxx -nopie -nossp -objc -objc++ -objc-gc -openmp -test -vanilla" 64,858 kB

```

----------

## opotonil

No tengo ahora mismo ningun Gentoo a mano, pero mirando el ebuild en http://gpo.zugaina.org veo que tiene la variable KEYWORDS vacia y ocurre en todas las versiones 4.6.x:

```

...

DESCRIPTION="The GNU Compiler Collection"

LICENSE="GPL-3 LGPL-3 || ( GPL-3 libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.2"

KEYWORDS=""

...

```

GCC 4.6.0: http://gpo.zugaina.org/AJAX/Ebuild/2271435/View

GCC 4.6.1-r1: http://gpo.zugaina.org/AJAX/Ebuild/2418768/View

GCC 4.6.2: http://gpo.zugaina.org/AJAX/Ebuild/2446914/View

No se si puede ser un fallo de http://gpo.zugaina.org o si es real...

Salu2.

 *Quote:*   

> Ahm, entiendo. No sabía que versiones superiores del compilador podían no ser retrocompatibles, o como se diga, al menos no pensaba que de una 4.6 a una 4.5 pudiera haber tanta diferencia.

 

Si no me equivoco aqui https://bugs.gentoo.org/show_bug.cgi?id=346809 tienes un listado de los paquetes que se sabe fallaban o fallan con GCC-4.6

----------

## Latinvs

Buena observación, Optonil, jamás se me habría ocurrido ponerme a revisar los ebuilds. No sé si será ese el motivo, pero quizá al no indicarse ninguna arquitectura en KEYWORDS a Portage no le aparezca como versión disponible a priori. Lo raro es que a Gringo no le pase lo mismo...

En fin, como digo no he tenido ningún problema (gracias por la referencia de bugs.gentoo, por cierto), es más por "afán de conocimiento".

Saludos.

----------

## opotonil

Por ejemplo yo uso portage de la rama inestable que tiene la variable KEYWORDS con unos valores que no incluyen mi arquitectura (amd64):

```

DESCRIPTION="Portage is the package management and distribution system for Gentoo"

HOMEPAGE="http://www.gentoo.org/proj/en/portage/index.xml"

LICENSE="GPL-2"

KEYWORDS="~sparc-fbsd ~x86-fbsd"

SLOT="0"

IUSE="build doc epydoc +ipc linguas_pl python2 python3 selinux xattr"

```

Asi que para usarlo tengo que poner en /etc/portage/package.keywords lo siguiente:

```

=sys-apps/portage-2.2* **

```

 *Quote:*   

> 
> 
> Lo raro es que a Gringo no le pase lo mismo... 
> 
> 

 

Puede que Gringo no haya hecho un emerge --sync desde hace tiempo o... No olvidemos que son paquetes instalados de la rama inestable.

----------

